- 函数重载和虚函数处理:函数重载处理的是同一层次上的同名函数问题。虚函数处理的是不同派生层次上的同名函数问题。同一类族的虚函数的首部是相同的,而函数重载时函数的首部是不同的(参数个数或类型不同)。
- 虚函数:
- (1)只能用virtual声明类的成员函数,使它成为虚函数,而不能将类外的普通函数声明为虚函数。因为虚函数的作用是允许在派生类中对基类的虚函数重新定义。只能用于类的继承层次结构中。
- (2)一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但与该虚函数具有相同的参数(包括个数和类型)和函数返回值类型的同名函数。
3.纯虚数函数:
纯虚函数是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般形式:virtual 函数类型 函数名(参数表列)=0;
注意点:
①纯虚函数没有函数体;
②最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统这是纯虚函数”;
③这是一个声明语句,最后应有分号纯虚函数只有函数的名字而不具备函数的功能,不能被调用。
4.纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。如果在基类中没有保留函数名字,则无法实现多态性。
如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数。
5.虚函数的类型:
虚函数一定是成员函数,静态成员函数都不行,因为它不捆绑对象,同样,构造函数也不行因为它只产生对象,也不捆绑对象,可是,析构函数却可以是虚函数。一旦有了虚函数,就不可能是内联函数。
6.凡是包含纯虚函数的类都是抽象类。
其余部分可见上一篇文章