C ++类构造函数语法

时间:2015-09-05 21:14:31

标签: c++

如果同一个类有多个构造函数,有没有办法在C ++中使用类似C#的构造函数语法,例如:

class complex
{
public:
    double re, im;

    complex(double r, double i)
    {
        re = r;
        im = i;
    }

    complex():this(0.0d,0.0d) 
    {

    }
};

这个特殊的例子似乎没有用,但有没有呢?

2 个答案:

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