Table of Contents
#custom-toc-container
虚函数 & 接口(纯虚函数)
C++的 `虚函数` 和 `纯虚函数` 使用`virtual`关键字修饰。 # 虚函数 虚函数有函数体(函数实现)。 子类(也叫派生类) 可以 `重写`(覆写) 父类的虚函数,用`override`标识,override关键字可以省略。 ```cpp #include
class Animal { public: virtual std::string get_name() { return "Animal"; } }; class Dog : public Animal { std::string m_name; public: Dog(const std::string name) : m_name(name){} std::string get_name() override { return m_name; } }; ``` # 接口 ## 纯虚函数 纯虚函数只有声明,没有函数体(函数实现),赋值为0。 子类`必须实现`父类的纯虚函数 (强制派生类实现)。 示例: ```cpp class Printable // 接口类 { public: virtual std::string get_class_name() = 0; }; class Animal : public Printable { public: std::string get_class_name() override { return "Animal"; } }; class Dog : public Animal { public: std::string get_class_name() override { return "Dog"; } }; void print(Printable* obj) { std::cout << obj->get_class_name() << std::endl; } ``` ## 接口 C++的接口是包含一个或多个`纯虚函数`的类,这种类称为抽象类。 C++没有接口关键字,其接口也是类,即接口类。上例中,Printable类就是一个接口。