c++类构造函数语法

C++ class constructors syntax

本文关键字:语法 构造函数 c++      更新时间:2023-10-16

当一个类有多个构造函数时,是否有办法在c++中使用类似c#的构造函数语法,例如:

class complex
{
public:
    double re, im;
    complex(double r, double i)
    {
        re = r;
        im = i;
    }
    complex():this(0.0d,0.0d) 
    {
    }
};

这个特殊的例子似乎不起作用,但是还有吗?

在c++ 11中可以这样做:

class complex {
public:
    double re, im;
    complex(double r, double i) 
      : re(r), im(i) {
    }
    complex()
      : complex(0.0d, 0.0d) {
    }
};

如果由于某些原因你不能使用c++ 11,而你需要一个如此简单的情况,你可以使用默认参数:

class complex {
public:
    double re, im;
    complex(double r = 0.0, double i = 0.0) 
      : re(r), im(i) {
    }
};

当然有一个缺点:你可以(错误地)只提供一些参数,比如:complex a(1.0)

从c++ 11开始有构造函数委托特性。

你可以这样做:

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;
}