有没有办法避免跨类的不同构造函数进行代码复制?
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])
{
}
}
答案 0 :(得分: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])
{
}
答案 1 :(得分:2)
如果您不拥有C ++ 11,您可以使用私有void init(...)
功能。请注意,您不能以这种方式初始化const引用。
答案 2 :(得分:1)
我建议你使用类内初始化。
class sample
{
int a = 0;
int b = 0;
char *c;
public:
sample(int q) : c(new char [10 * q]) {}
sample() : c(new char [10]) {}
}