在Java中,我们可以编写如下:
public class Demo{
private int val;
public Demo(int val){this.val = val;}
public Demo(){this(0);}
}
但是,它在C ++中不起作用:
class Demo{
private:
int _val;
public:
Demo(int val):_val(val){}
Demo(){this(0);}
}
如何修改此代码?
答案 0 :(得分:8)
使用C ++ 11,您可以使用委托构造函数:
Demo():Demo(0){ }
答案 1 :(得分:4)
class Demo{
private:
int _val;
public:
Demo(int val):_val(val){}
Demo() :_val(0) {}
}
或
class Demo{
private:
int _val;
public:
Demo(int val):_val(val){}
Demo() :Demo(0) {}
}
答案 2 :(得分:1)
或者这种方法在有很多成员初始化时(以及在C ++ 11之前)很有用:
class Demo{
private:
int _val;
void Init( int val )
{
_val = val;
}
public:
Demo(int val){Init(val);}
Demo(){Init(0);}
}