2

可能重复:
在构造函数中初始化,最佳实践?

我是 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++ 中更好;正确的?为什么?

4

1 回答 1

8

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

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

于 2012-05-02T16:26:26.473 回答