面向对象编程
1、封装、继承、多态
封装隐藏实现细节,把数据及其操作封为模块;继承可以使用现有功能,扩展模块(类),多态可以实现接口重用
多态是指父类型指向子类对象,通过父类指针调用子类的函数,父类指针有多种形态,运行时才确定所调用的函数。
多态:编译期间就可以确定要调用的函数,则为编译时多态;运行期间根据父类指针实际指向的对象以及参数确定要调用的子类函数,则为运行时多态
2、多态性实现
重载:同一类中,函数名相同、参数不同或者返回值不同,virtual可有可无
覆盖:基类函数有virtual,子类与基类函数名字和参数及返回值相同,子类virtual可有可无
隐藏:函数名相同,参数不同,子类隐藏基类函数
函数名和参数都相同,基类没virtual,则子类隐藏基类函数
3、纯虚函数
virtual void f(){}=0,有纯虚函数的类是抽象类
4、虚函数
有虚函数的类会有一个虚函数表,保存所有的虚函数地址
5、虚析构函数
虚析构函数是为了解决基类指针指向子类对象,并用基类指针删除派生类对象
如果某个类不包含虚函数,一般不做基类使用,子类析构先被调用,然后父类调用
A* a =new B() 如果基类不声明虚析构函数,那么就无法运行时确定调用子类析构函数,造成内存泄露
浙公网安备 33010602011771号