继承、多态

虚函数与纯虚函数

1、虚函数:在基类中必须实现,子类可以不重写;

2、纯虚函数:在基类中只声明不实现,子类必须重写;基类为纯虚类,不能实例化对象。

 

c++11引入关键字 overridefinal 用来解决继承中虚函数的问题。 纯虚函数不可使override 、final关键字。

override 指明该函数是重载的基类中的一个函数
final A.禁止该函数从基类继承;B.禁止该函数的重载

class
base_class { public: // 用作测试 override 关键字的函数 virtual void show() { std::cout << "base_class::show()\n"; } // 用作测试 final 关键字的函数 virtual void say() final { std::cout << "base_class::say()\n"; } }; class demo_class : public base_class { public: // override的作用:指明该函数时重载的基类中的一个函数 // 这里明确指明该函数是继承基类的show函数 virtual void show() override { std::cout << "demo_class::show()\n"; } // 编译错误: error C3248: “base_class::say”: 声明为“final”的函数无法被“demo_class::say”重写 // virtual void say() override { std::cout << "demo_class::say()\n"; } };

 

posted @ 2021-02-03 10:38  玥茹苟  阅读(50)  评论(0编辑  收藏  举报