我是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 ++中更好;对?为什么呢?
答案 0 :(得分:8)
第一个(使用初始化列表)将数据成员初始化为给定值。第二个首先初始化它们,然后为它们分配值。这就是首选的原因。那里没有不必要的分配操作。
当您的数据成员构建和/或分配成本昂贵时,这一点尤其重要。还要记住,某些类型不是默认构造的,因此必须使用初始化列表。