虚函数:
(1)虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通
过基类指针或引用来访问基类和派生类中的同名函数;
(2)C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数;因此在派生类重新声明该虚函数时,可以加virtual,也可以不加,但习惯上一般在每一层声明该函数时都加virtual,使程序更加清晰;
(3)只能用virtual声明类的成员函数,使它成为虚函数,而不能将类外的普通
函数声明为虚函数;
(4)如果用new运算符建立了临时对象,若基类中有析构函数,并且定义
了一个指向该基类的指针变量。在程序用带指针参数的delete运算符撤销对象时,会发生一个情况:系统会只执行基类的析构函数,而不执行派生类的析构函数,因此我们可以定义虚析构函数;一般都习惯声明虚析构函数,即使基类并不需要析构函数,也显式地定义一个函数体为空的虚析构函数,以保证在撤销动态分配空间时能得到正
确的处理
(5)纯虚函数:
1>定义一般形式:virtual 函数类型函数名 (参数表列) const =0;
2>如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则
该虚函数在派生类中仍然为纯虚函数;
(6)抽象类:
1>不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类(abstract class ),由于它常用作基类,通常称为抽象基类(abstract base class );
2>凡是包含纯虚函数的类都是抽象类;
3>如果在派生类中没有对所有纯虚函数进行定义,则此派生类仍然是抽象类,
不能用来定义对象;
4>抽象类不能定义对象(或者说抽象类不能实例化),但是可以定义指向抽
象类数据的指针变量;