c++ - 如何避免样板代码构造函数?

标签 c++ oop inheritance

让我们这样上课:

struct Base {
  Base() { ... }
  Base(int) { ... }
  Base(int,string) { ... }
  ...
};

我想从Base继承很多类,所以我写

struct Son : public Base {
  Son() : Base() { }
  Son(int) : Base(int) { }
  Son(int,string) : Base(int,string) { }
};

struct Daughter : public Base {
  Daughter() : Base() { }
  Daughter(int) : Base(int) { }
  Daughter(int,string) : Base(int,string) { }
};

而且我不需要向 child 的构造函数添加任何代码。是否可以隐式继承它们?要像在 Base 中一样调用它们,只需更改名称即可?预处理器可能会在这里被滥用,但还有其他解决方法吗?

最佳答案

在兼容 C++11 的编译器(标准中的第 12.9 节)中,您实际上可以很容易地做到这一点:

struct Son : public Base {
  using Base::Base;
};

这继承了 Base 的所有构造函数,等同于类 Son 的代码。

关于c++ - 如何避免样板代码构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719015/

相关文章:

c++ - 在类中初始化动态数组的函数

Javascript 运行对象和所有这些方法

c# - .Net Fakes - 当基类是抽象的时如何填充继承的属性?

java - Java中具有继承类的静态数组

c++ - boost::iostreams::source 中的读取函数实际上是如何工作的?

c++ - 贝塞尔曲线评估

c# - OOP C# 问题 : Making a Fruit a Pear

symfony - 使用 Doctrine 将实体与不同的子类合并

c++ - 最近盒子的面积

java - 我应该为永远不会改变的字段值使用访问器吗?