C++ class constructors syntax
本问题已经有最佳答案,请猛点这里访问。
当你有同一个类的多个构造函数时,是否有任何方法在C++中使用C类类似的构造函数语法,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class complex { public: double re, im; complex(double r, double i) { re = r; im = i; } complex():this(0.0d,0.0d) { } }; |
这个特别的例子似乎不起作用,但有没有?
在C++ 11中,你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class complex { public: double re, im; complex(double r, double i) : re(r), im(i) { } complex() : complex(0.0d, 0.0d) { } }; |
如果由于某种原因,你不能使用C++ 11,你需要一个简单的例子,你可以使用默认参数:
1 2 3 4 5 6 7 8 9 | class complex { public: double re, im; complex(double r = 0.0, double i = 0.0) : re(r), im(i) { } }; |
这当然有一个缺点:你只能(错误地)提供一些论据,比如:
从C++ 11中有构造函数委托特征。
你可以做到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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; } |