构造函数比较

时间:2012-05-02 16:25:28

标签: c++

  

可能重复:
  Initializing in constructors, best practice?

我是C ++的新手。

假设我们有这个类定义:

Class MyClass {
  int a;
  int b;

  //....
}

我想知道两个类构造函数之间的区别是什么:

public: 
    MyClass(int a, int b) : a(a), b(b) {}

和(我会说Java风格):

MyClass(int a, int b) {

this->a = a;
this->b = b;
}

我认为第一个在C ++中更好;对?为什么呢?

1 个答案:

答案 0 :(得分:8)

第一个(使用初始化列表)将数据成员初始化为给定值。第二个首先初始化它们,然后为它们分配值。这就是首选的原因。那里没有不必要的分配操作。

当您的数据成员构建和/或分配成本昂贵时,这一点尤其重要。还要记住,某些类型不是默认构造的,因此必须使用初始化列表。