C++: protected 类构造函数

标签 c++ inheritance polymorphism base-class

如果一个类总是要被继承,那么让构造函数protected有意义吗?

class Base
{
protected:
    Base();
};

class Child : protected Base
{
public:
    Child() : Base();
};

谢谢。

最佳答案

只有在您不希望客户端创建 Base 的实例时才有意义,而是您希望它成为某些 [derived] 类的基类,和/或希望它成为由 Base 的 friend 使用(参见下面的示例)。请记住,protected 函数(和构造函数)只能从派生类和 friend 类中调用。

class Sample;
class Base
{
    friend class Sample;
protected:
    Base() {}
};

class Sample
{
 public:
   Sample()
   {
      //invoking protected constructor
      Base *p = new Base();
   }
};

关于C++: protected 类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524325/

相关文章:

c++ - 计算给定类(class)的人数

C++ 虚拟方法 : access rights, friends & Co

c# - 我如何更改嵌套构造函数的调用顺序(抽象父级之前的子级)

.net - 是否可以通过覆盖来将访问器添加到 .NET 中的属性?

c++ - for的递归

c++ - Eigen :如何将未知大小的矩阵存储为类中的成员?

C++ Header #define 编译器错误

c++ - 结构、继承和定义

c++ - 在派生类中复制类似构造函数的基类实例复制

c++ - 排序对象和多态性