构造函数比较

Asl*_*986 2 c++

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

我是C++的新手.

假设我们有这个类定义:

Class MyClass {
  int a;
  int b;

  //....
}
Run Code Online (Sandbox Code Playgroud)

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

public: 
    MyClass(int a, int b) : a(a), b(b) {}
Run Code Online (Sandbox Code Playgroud)

(我会说Java风格):

MyClass(int a, int b) {

this->a = a;
this->b = b;
}
Run Code Online (Sandbox Code Playgroud)

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

jua*_*nza 8

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

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