【发布时间】:2012-01-13 17:03:33
【问题描述】:
类的构造函数的初始化顺序重要吗?
所以说我有:
class MyClass : BaseClass
{
int a, b, c;
public:
MyClass(int);
}
例如1:
MyClass::MyClass(int forBase) :
a(7),
b(14),
c(28),
BaseClass(forBase) { }
例如2:
MyClass::MyClass(int forBase) :
BaseClass(forBase),
a(7),
b(14),
c(28) { }
示例 1 会与示例 2 做一些不同的事情吗?
【问题讨论】:
-
我对第三种情况感兴趣。假设没有基类。初始化
a、b和c的顺序是否重要? g++ 使用-Weffc++对此发出警告(我认为)。 -
不,不是,重要的是声明的顺序,查看this,有一个C++03标准的引用,我认为C+没有什么不同+11。
-
@Mr.TAMER:你发现了一个重复
-
@LightnessRacesinOrbit:我知道,并且打算声明,但我认为不要这样做,因为我认为有人会发布新标准的报价,所以答案会比这更好,我碰巧:) 所以我真的认为在那个答案中添加一个指向这个答案的链接会非常好:)
-
仅供参考,
[C++03: 12.6.2/5]的措辞相同。 :)
标签: c++ constructor initialization