c++ - 禁止在派生类中使用默认构造函数,C++

标签 c++ inheritance constructor default-constructor

有什么方法可以创建基类(例如boost::noncopyable)并继承它,这将禁止编译器为派生类生成默认构造函数,如果它不是由用户(开发者)?

例子:

class SuperDad {
XXX:
  SuperDad(); // = delete?
};

class Child : YYY SuperDad {
public:
  Child(int a) {...}
};

结果:

int main () {
  Child a;     // compile error
  Child b[7];  // compile error
  Child c(13); // OK
}

最佳答案

将构造函数设为私有(private)。

protected:
    Base() = default;

关于c++ - 禁止在派生类中使用默认构造函数,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862976/

相关文章:

c++ - 使用 Boost 解析后在 JSON 文件中查找重复项

c++ - 为什么模板化的派生类可以在 gcc 上访问其基私有(private)成员?

全局范围内的 JavaScript 数字构造方法。他们为什么工作?

generics - Kotlin 和泛型构造函数让我感到困惑

c++ - std::ofstream.write() 在写入字符数组时是否比单个字符更快?

c++ - 托管 C++ 和 C++ 之间的区别

c++ - 当我运行此代码时,无论字符串是什么,结果始终为 24。为什么?

c# - 在具有不同数据类型的派生类中覆盖 C# 变量

c++ - 虚拟函数,什么时候使用它们?

java - 尽管显式编写了另一个构造函数,但是否创建了空构造函数?