public, private和protected继承比较

     以下内容整理自《程序员面试宝典》,重点讨论一下C++中三种继承方式的区别。

1, 公有继承(public

基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,protectedprivate成员不可见。

基类成员对派生类的可见性对派生类来说,基类的publicprotected成员可见:基类的public成员和protected成员作为派生类的成员时,它们都保持原有状态;基类的private成员依旧是private,派生类不可访问基类中的private成员。

基类成员对派生类对象的可见性 对派生类对象来说,基类的public成员是可见的,其他成员是不可见的。

所以,在公有继承时,派生类的对象可以访问基类中的public成员,派生类的成员方法可以访问基类中的public成员和protected成员。

2, 私有继承(private

基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,其他成员不可见。

基类成员对派生类的可见性对派生类来说,基类的public成员和protected成员是可见的:基类的public成员和protected成员都作为派生类的private成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的:派生类不可访问基类中的private成员。

基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。

所以在私有继承时,基类的成员只能由直接派生类访问,无法再往下继承。

3.保护继承(protected

保护继承与私有继承相似,基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,其他成员不可见。

基类成员对派生类的可见性,对派生类来说,基类的publicprotected成员是可见的:基类的public成员和protected成员都作为派生类的protected成员,并且不能被这个派生类的子类所访问;基类的private成员是不可见的:派生类不可访问基类中的private成员。

基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。

所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再向下继承。

C++支持多重继承。多重继承是一个类从多个基类派生而来的能力。派生类实际上获取了所有基类的特性。当一个类 是两个或多个基类的派生类时,派生类的构造函数必须激活所有基类的构造函数,并把相应的参数传递给它们

你可能感兴趣的:(C++,面试)