在这种社会化过程中,“ {x = a; y = b;}”是做什么的?

时间:2019-07-28 12:33:20

标签: c++ class constructor initialization default-constructor

我不确定这部分代码的确切目的,我需要在我的研讨会中进行解释。

class point {
public:
    point( int a = 0, int b = 0 ) **{ x = a; y = b; }**
    bool operator ==( const point& o ) { return o.x == x && o.y == y; }
    point operator +( const point& o ) { return point( o.x + x, o.y + y ); }
    int x, y;
};

1 个答案:

答案 0 :(得分:0)

{ x = a; y = b; }

是构造函数point( int a = 0, int b = 0 );

的复合语句

也许更清楚是否像这样重写构造函数

point( int a = 0, int b = 0 ) 
{ 
    x = a; 
    y = b; 
}

因此,构造函数的两个参数的默认参数均等于0。数据成员xy在构造函数的复合语句中初始化(使用Assignemnt运算符)。

构造函数可以这样称呼

point p1; // x and y are initialized by 0
point p2( 10 ); // x is initialized by 10 and y is initialized by the default argument 0
point p3( 10, 20 ); // x is initialized by 10 and y is initialized by 20

也可以通过以下方式定义相同的构造函数

point( int a = 0, int b = 0 ) : x( a ), y( b ) 
{ 
}