C ++类构造函数语法


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) {

    }
};

这当然有一个缺点:你只能(错误地)提供一些论据,比如:complex a(1.0)


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