关于上课的问题

时间:2010-07-18 17:51:06

标签: c++

  

可能重复:
  Why should I prefer to use member initialization list?
  C++ - what does the colon after a constructor mean?

这是以下代码

class vector2d {
public:
  double x,y;
  vector2d (double px,double py): x(px), y(py) {}

我不明白这一行

 vector2d (double px,double py): x(px), y(py) {} 

与...相同  vector2d(double px,double py){ x=px;y=py;}?或?

1 个答案:

答案 0 :(得分:0)

是的,在你的例子中它是一样的。但是,有一个细微的差别:x(px)将x初始化为px,但x = px指定它。你不会知道double变量的区别,但是如果一个类的x会有很大差异。让我们假设x是foo类型的类:

x(px)将调用foo复制构造函数foo :: foo(foo& classToCopyFrom)。

另一方面,

x = px会先调用foo默认构造函数,然后调用foo赋值运算符。

这是一个很好的理由,在大多数情况下你应该更喜欢x(px)。