案例一:
class ObjectCount {
private:
ObjectCount(){}
};
class Employee : private ObjectCount {};
案例二:
class ObjectCount {
public:
ObjectCount(){}
};
class Employee : private ObjectCount {};
案例 1:ObjectCount 构造函数是私有(private)的,继承是私有(private)的。它给出了编译器错误
情况 2:ObjectCount 构造函数是公共(public)的,继承是私有(private)的。这段代码没问题。
谁能解释一下这是怎么回事?
最佳答案
在第一种情况下,Employee
C'tor 不能调用其父 (ObjectCount
) C'tor,因为它是私有(private)的。
在第二种情况下,Employee
C'tor 调用父级的 ctor 没有问题,因为它是公开的。
请注意,这很重要,因为每个类都必须在激活自己的构造函数之前使用其父构造函数。
私有(private)继承意味着其他类不能使用[或看到]Employee
作为ObjectCount
,它不会改变ObjectCount
的可见性> 的 c'tor,在任何情况下派生类都必须可以访问它。
关于c++ - 具有私有(private)构造函数的类私有(private)继承的工作机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202341/