c++ - 具有私有(private)构造函数的类私有(private)继承的工作机制

标签 c++

案例一:

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/

相关文章:

c++ - 函数参数不会在该函数退出时销毁

c++ - 如何拥有 unordered_multimaps 的 unordered_multimap

c# - C++ 到 C# 代码转换类型

c++ - 为什么我们在这个例子中同时需要 const 和非常量 getter

c++ - 我应该如何将数据类链接到我的 GUI 代码(以在 C++ 中显示对象的属性)?

c++ - Boost adjacency_list 需要帮助

C++ 尝试使用#ifndef 和#include 语句

c++ - QFile "remove()"不删除执行时众所周知的文件

c++ - 如何在 main() 完成后调用 C++ 函数

C++ Qt - 设置 QTableWidget 项目值