虚函数
一:虚函数的注意:
1. virtual只能声明类的成员函数, 不能在类外声明。
2. 一个成员函数在被声明为虚函数后,就不能再定义一个virtual得但是与该虚函数具有相同的参数(包括类型与个数)和函数返回值类型的同名函数。
二:什么情况下使用虚函数呢?
1.看成员函数的类是否会作为基类,然后看成员函数再类的继承后有误可能被修改功能,若希望修改功能的,应把他声明为虚函数
2.应考虑对成员函数的调用是哦那个过对象名还是通过基类指针或引用去访问,若是,则应当声明为虚函数。
三:需要说明的是:使用虚函数,系统要有一定的开销,当一个类带有虚函数时,编译系统会为该类构造一个函数表,他是一个指针数组,存放每个虚函数的入口地址。系统在进行动态关联时的时间是很少的。因此,多态性是高效的。
四:需析构函数一般习惯将析构函数定义为虚析构函数,即使基类并不需要析构函数,也显示地定义一个函数体为空的析构函数,以保证再撤销动态存储空间是能得到正确的处理。
五:纯虚函数 virtual float area()const =0; 这就将area 声明一个纯虚函数,纯虚函数是在声明虚函数是被初始化为0的函数。 纯虚函数不能被调用。在派生类中对此函数进行定义后,他才具备函数的功能,可以被调用。 如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数再派生类中仍然是纯虚函数。