如何避免样板代码构造函数
How to avoid boilerplate code constructors?
让我们有这样的类:
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) { }
};
而且我不需要向孩子的构造函数添加任何代码。是否可以隐式继承它们?像Base
一样称呼它们,只是改名?预处理器可以在这里被滥用,但还有其他解决方法吗?
在符合 C++11 的编译器(标准中的 §12.9)中,您实际上可以很容易地做到这一点:
struct Son : public Base {
using Base::Base;
};
这继承了 Base
的所有构造函数,等效于类 Son
的代码。
相关文章:
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 是否可以避免在以下代码中复制/移动构造函数的需要?
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 为什么我的代码中没有调用move构造函数
- 基于构造函数的存在禁用代码
- 如何从构造函数返回错误代码?
- 为什么在我的代码中调用复制构造函数而不是移动构造函数?
- 如何基于构造函数参数模板化类成员函数的代码
- C++,处理多个构造函数重载和冗余代码
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- 如何在C ++代码中搜索所有构造函数?
- C++具有移动和复制构造函数的类中的代码重复
- C++参数化构造函数使代码在传递大输入时停止工作
- 为什么没有参数的构造函数似乎是此代码的问题
- 该构造函数代码如何将指针作为参数
- 为什么此C++代码中的构造函数模棱两可以及如何修复它
- Python 错误:在 SWIG 生成的C++模板化代码模块中没有定义构造函数
- 为什么在下面的代码中调用复制构造函数两次
- 编译器将私人构造函数作为程序代码中的候选人提供
- 如何避免样板代码构造函数