在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。
因此:可以将虚函数改为纯虚函数。
纯虚函数语法:返回值类型 函数名 (参数列表)= 0;
类似一种声明。
当类中有了纯虚函数,这个类也称为抽象类。
抽象类特点:
无法实例化对象。子类必须重写抽象类中的纯虚函数,否则子类也属于抽象类,也无法实例化对象。
无论在栈上,还是堆上,都无法实例化对象。
类似:《C#学习笔记(二十二)抽象类与开闭原则:抽象类和接口怎么来的?》中也规定:子类必须把抽象类中的虚函数实现。
对比一下C#:一样的 *** 作。
纯虚函数和抽象类
class base { public: // 纯虚函数 virtual void func() = 0; // 只要这个类有一个纯虚函数,这个类就是抽象类 // 抽象类特点:1、无法实例化对象;2、子类必须实现,否则子类也是抽象类。 };
只要这个类中有一个纯虚函数,这个类就是抽象类。
class Son :public base { public: virtual void func(){} // 空函数体也是重写。 };
多态实现:
void test01() { base* base = new Son; base->func(); delete base; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)