私有成员有没有被继承?

私有成员被继承,只不过子类不能访问父类的私有成员。很好证明:


私有成员有没有被继承?_赋值私有成员有没有被继承?_赋值_02


1 class Base
2 {
3 private :
4 int a;
5 };
6
7 class Derived:Base
8 {
9 private :
10 int b;
11 };
12
13
14 int _tmain(int argc, _TCHAR* argv[])
15 {
16 Base base;
17 std::cout<<sizeof(base); // 4
18
19 std::cout<<std::endl;
20
21 Derived derived;
22 std::cout<<sizeof(derived); // 8
23
24 return 0;
25 }

View Code

另一个例子,就是noncopyable,noncopyable声明私有的copy构造和copy赋值,没有定义。继承noncopyable的类,就不能copy构造和copy赋值了,说明继承了noncopyable的私有成员。

也就是说,子类继承父类所有的成员,但是不能访问父类的私有成员。