C++私有继承能否继承基类的私有成员的问题。
2022-09-26 · 百度认证:北京惠企网络技术有限公司官方账号
首先,基类的私有成员是会被派生类继承的,但是不能被派生类访问;从物理上讲是复制过来了,在内存中确实有复制。但是从程序上看是被屏蔽了,不能直接调用。
其次,对于基类public类型的成员变量,无论是公有继承还是私有继承,都可以直接在派生类中定义的成员函数直接访问。
对于基类private类型的成员变量,无论是公有继承还是私有继承,在派生类中定义的成员函数都不能直接访问基类的私有成员,只能通过基类的public或protect成员函数访问。
扩展资料
父类A中的所有成员在子类对象B中都是不可见的。但是父类中的公有成员在私有继承的子类B中是可见的,可以被访问,但是其属性在子类发生降级。
父类A中的public和protected属性的成员在子类中虽然能被访问,但是其属性在子类中被降级为private,所有子类成员是无法访问父类成员的,因为对于子类对象来说,父类的成员全部都是private,都是不可见的。
关于私有继承的总结:父类公有成员和保护成员都作为子类的私有成员,并且不能被这个子类的对象所访问。如果子类再派生出一个孙子类的话,因为父类的成员在子类中只有公有成员和保护成员可以访问,并且属性降级为private。
所以孙子类即使是公有继承子类的,也不能访问private成员。所以在私有继承时,父类的成员只能由直接派生子类访问,而无法再往下继承。