【问题标题】:What is "{ x = a; y = b; }" doing in this incialization? [closed]"{ x = a; y = b; }" 在这个初始化中做了什么? [关闭]
【发布时间】:2019-12-06 00:47:07
【问题描述】:

我不确定这部分代码的确切用途,我需要在我的研讨会上解释它。

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

【问题讨论】:

  • google:什么是 c++ 构造函数
  • 它是一个构造函数,它在创建对象时为其赋予初始值。你真的在学习 C++,还没有人告诉你关于构造函数的事吗?
  • 这部分是函数体。

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


【解决方案1】:
{ 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 ) 
{ 
}

【讨论】:

  • 谢谢弗拉德,帮了我很多:)
猜你喜欢
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2021-03-04
相关资源
最近更新 更多