有没有办法避免跨类的不同构造函数进行代码复制?

Ano*_* pS 9 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])
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*hik 9

它被称为委托构造函数.在你的情况下,它看起来像这样:

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

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

sample(int q, int d) : a(q),
   b(q), 
   c(new char [d])
{
}
Run Code Online (Sandbox Code Playgroud)

  • @Holt afaik如果它被标记为C++它指的是最新标准.Imho我们需要一个"pre-C++ 11"标签 (7认同)
  • @Holt因为它是在2016年中期我会说如果他们*不是*使用C++ 11或更高版本,由OP决定. (6认同)