c++ - 有什么方法可以避免跨类的不同构造函数进行代码复制?

标签 c++ c++11

有什么方法可以避免类的不同构造函数之间的代码复制?

class sample
{
    int a, b;
    char *c;
public:
    sample(int q) :
      a(0),
      b(0), 
      c(new char [10 * q])
    {
    }

    sample() :
      a(0),
      b(0),
      c(new char [10])
    {
    }
}

最佳答案

它被称为委托(delegate)构造函数。在您的情况下,它看起来像这样:

sample(int q) : sample(q, 10 * q)
{
}

sample() : sample(0, 10)
{
}

sample(int q, int d) : a(q),
   b(q), 
   c(new char [d])
{
}

关于c++ - 有什么方法可以避免跨类的不同构造函数进行代码复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634427/

相关文章:

c++ - 编码新手需要有关 if 语句的帮助

c++ - 在 C++ 中构造 vector

c++ - CMake 使库需要 cxx 标准

C++ 将流操纵器复制到其他流

c++ - gcc 4.7 有时无法使用指针模板参数

c++ - 传递给 std::unordered_set::erase() 的无效迭代器的结果

C++ 性能/内存优化指南

c++ - 如何在 QT 中对小部件进行逻辑分组以便于显示/隐藏?

c++ - 如何验证返回的 `auto` 变量是否为引用

c++ - 存储 FIX 消息的最佳数据结构是什么?