首先,基类的私有成员是会被派生类继承的,但是不能被派生类访问;从物理上讲是复制过来了,在内存中确实有复制。但是从程序上看是被屏蔽了,不能直接调用。
其次,对于基类public类型的成员变量,无论是公有继承还是私有继承,都可以直接在派生类中定义的成员函数直接访问。
对于基类private类型的成员变量,无论是公有继承还是私有继承,在派生类中定义的成员函数都不能直接访问基类的私有成员,只能通过基类的public或protect成员函数访问。
#include<iostream> using namespace std; class A { private : int a; public : //构造函数,默认将a赋值为2; A() { a = 2; } //获得私有成员a的值 int getNum() { return a; } }; class B : private A { public: //因为是私有继承,无法访问基类的公有成员函数, //只能自定义一个成员函数来访问该类B从基类A继承下来的属性。 int get() { return getNum();//getNum函数是从基类私有继承下来的私有函数。 } }; int main() { B b; cout<<b.get()<<endl; }