如果同一个类有多个构造函数,有没有办法在C ++中使用类似C#的构造函数语法,例如:
class complex
{
public:
double re, im;
complex(double r, double i)
{
re = r;
im = i;
}
complex():this(0.0d,0.0d)
{
}
};
这个特殊的例子似乎没有用,但有没有呢?
答案 0 :(得分:4)
在C ++ 11中,你可以这样做:
getline
如果出于某种原因你不能使用C ++ 11并且你需要一个这么简单的案例,你可以使用默认参数:
class complex {
public:
double re, im;
complex(double r, double i)
: re(r), im(i) {
}
complex()
: complex(0.0d, 0.0d) {
}
};
当然有一个缺点:你可以(错误地)提供一些参数,例如:class complex {
public:
double re, im;
complex(double r = 0.0, double i = 0.0)
: re(r), im(i) {
}
};
。
答案 1 :(得分:1)
从C ++ 11开始,有constructor delegation feature.
你可以这样做:
class A{
public:
A(): A(0){ cout << "In A()" << endl;}
A(int i): A(i, 0){cout << "In A(int i)" << endl;}
A(int i, int j){
num1=i;
num2=j;
average=(num1+num2)/2;
cout << "In A(int i, int j)" << endl;}
private:
int num1;
int num2;
int average;
};
int main(){
class A a;
return 0;
}