virtual 返回值类型 函数名 (函数参数) = 0;纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上
=0
,表明此函数为纯虚函数。class AbstractBase { public: virtual void pureVirtualFunction() = 0; // 纯虚函数声明 };包含纯虚函数的类称为抽象类(Abstract Class)。之所以说它抽象,是因为它无法实例化,也就是无法创建对象。如果强行实例化抽象类,则会导致编译出错。
AbstractBase obj; //错误,AbstractBase 类中有纯虚函数,是抽象列,不能实例化
#include <iostream> class Shape { public: virtual void draw() = 0; // 纯虚函数 }; class Circle : public Shape { public: void draw() { std::cout << "Drawing a circle." << std::endl; } }; class Square : public Shape { public: void draw() { std::cout << "Drawing a square." << std::endl; } }; int main() { Circle circle; Square square; Shape* shapes[] = {&circle, &square}; for (const auto shape : shapes) { shape->draw(); } return 0; }示例中 Shape 是一个抽象类,到底要画成什么样子在 Shape 类中不能确定,因此不能给出 draw() 函数的具体实现,于是 draw() 函数声明为纯虚函数。
Drawing a circle.
Drawing a square.
本文链接:http://task.lmcjl.com/news/5245.html