一、隐藏
- 父子关系。
- 成员(数据成员或者成员函数)同名;
- 此时子类中会隐藏父类中的同名成员。
- 无法函数重载,只会隐藏!
- 如果想访问父类中的同名成员,需要 :: 操作。
- 访问父类同名函数的方法
二、is-a
(1)概念的理解
- 工人也是人,士兵也是人,隐形眼镜也是眼镜。
- 即派生类的对象,也是基类的对象。
(2)从存储角度理解
- 只能取部分内容赋值给父类,或者父类指针只能指向子类的部分内容。
三、虚析构函数
- 在父类和子类的析构函数前,添加关键字virtual,即可构成虚析构函数。
(1)虚析构函数的意义
int main(void)
{person* p=&soldier;//……delete p;
/*此时如果person类的析构函数,只是普通的析构函数,则只会调用person类的析构函数,而不会调用soldier类的析构函数
*这样会造成内存泄漏,因为person类的析构函数,只是释放了部分的内存资源。
*解决方法是,在person类的析构函数前,添加关键字virtual,表示这是虚析构函数。则delet p时,会调用person类和soldier类的析构函数。
*/return 0;}