1.虚函数标志着多态性:
基类和派生类的关系就像父子(老子可以让儿子干事,儿子却不能总是让老子去干事)所以,派生类的指针式不能指向基类的,基类的指针却可以指向派生类,基类指针指向派生类的时候,想要调用同名的派生类函数,就必须在基类中定义成虚函数,在程序运行的时候就可以动态的指向派生类的函数了。
2. 构造函数不能是虚函数:
因为,在构造函数中调用虚函数,实际执行的是父类的对应函数,因为自己还没有构造好, 多态是被disable的。
3.析构函数可以是虚函数:
在一个复杂类结构中,这往往是必须的。
4.纯虚函数:
将一个函数定义为纯虚函数,实际上是将这个类定义为抽象类,不能实例化对象。
5. 纯虚函数通常没有定义体,但也完全可以拥有:
析构函数可以是纯虚的,但纯虚析构函数必须有定义体,因为析构函数的调用是在子类中隐含的。
注意:
非纯的虚函数必须有定义体,不然是一个错误。