1.虚函数的重写
虚函数的条件就是:
1.要分别作用与基类和派生类当中。
2.三同:函数名相同、参数相同、返回值相同(协变除外,下面有讲到)
多态的条件:
1.必须调用基类的引用或者地址
2.调用得函数是重写的虚函数
2.虚函数重写的一些细节
1.派生类的重写可以不加virtual但是还是建议大家都加上。
2.返回值可以不一样,都必须具有父子关系的指针或则引用(不常用)-----协变
3.区分一下重载,重写,隐藏的概念
4.需要重写的一个十分重要的场景
1.析构函数可以是虚函数吗?为什么需要是虚函数?
2.析构函数加virtual,是不是虚函数重写?
3.是,因为类析构函数都是被处理成destructor这个函数
4.为什么要怎么处理呢?因为要让他们构成重写。
5.那为什么要让他们构成重写呢?
因为下面这个场景:(因此我们以后写基类的析构函数时,尽量都加一个virtual)
5.final 和 override
1.final---禁止派生类重写
2.override---检查派生类是否完成重写,不是则报错
1.设计一个不想被继承的类
1.方法1:基类构造函数私有(C++98)
其实也可以析构函数私有,但不建议那么做,有点麻烦每次析构类的时候。(不是自动析构了)
那么问题来了,怎么样创建这个A类呢?