关于虚函数
如果不是虚函数(没有使用关键字virtual),则程序将根据引用类型或者指针的类型来选择基类or派生类中的方法。如果是虚函数(使用virtual),程序将根据引用或者指针所指向的对象的类型来选择方法。这也是c++多态性的一个体现。
为什么需要虚析构函数
虚析构函数用于确保正确的析构函数序列被调用,防止某些情况下内存泄漏。如果析构函数是非虚的,则将只调用对应于指针类型的析构函数,例如一个基类的指针指向基类对象,另一个基类指针指向派生类对象,则只有基类的析构函数被调用。如果析构函数是虚的,则会先调用派生类的析构函数,然后自动调用基类的析构函数。
虚函数重新定义将隐藏方法
如果在派生类中重新定义了继承的方法,除了函数返回类型是基类引用或是指针的情况下,可以对返回类型作修改外,应确保与基类中的方法原型一致。
如果基类中的方法被重载了,则在派生类中应重新定义所有的基类版本。如果在派生类中只重新定义一个版本的方法,那么基类中其他版本的同名函数将被隐藏。假如派生类中不对基类中的这些同名函数作修改,在函数内直接调用基类中的函数。
1348

被折叠的 条评论
为什么被折叠?



