C++的多态

1.虚函数的重写

虚函数的条件就是:

1.要分别作用与基类和派生类当中。

2.三同:函数名相同、参数相同、返回值相同(协变除外,下面有讲到)

多态的条件:
1.必须调用基类的引用或者地址

2.调用得函数是重写的虚函数

C++的多态_第1张图片

2.虚函数重写的一些细节

1.派生类的重写可以不加virtual但是还是建议大家都加上。

C++的多态_第2张图片

2.返回值可以不一样,都必须具有父子关系的指针或则引用(不常用)-----协变

C++的多态_第3张图片

3.区分一下重载,重写,隐藏的概念

C++的多态_第4张图片

4.需要重写的一个十分重要的场景

1.析构函数可以是虚函数吗?为什么需要是虚函数?
2.析构函数加virtual,是不是虚函数重写?

3.是,因为类析构函数都是被处理成destructor这个函数

4.为什么要怎么处理呢?因为要让他们构成重写。

5.那为什么要让他们构成重写呢?

因为下面这个场景:(因此我们以后写基类的析构函数时,尽量都加一个virtual)

C++的多态_第5张图片

5.final 和 override

1.final---禁止派生类重写

C++的多态_第6张图片

2.override---检查派生类是否完成重写,不是则报错

C++的多态_第7张图片

1.设计一个不想被继承的类

1.方法1:基类构造函数私有(C++98)

其实也可以析构函数私有,但不建议那么做,有点麻烦每次析构类的时候。(不是自动析构了)

C++的多态_第8张图片

那么问题来了,怎么样创建这个A类呢?

C++的多态_第9张图片

你可能感兴趣的:(c++,开发语言)