以下代码:
class C
{
int a, b;
public:
C()
:b(0), a(0)
{}
};
导致 GCC 抱怨初始化顺序错误。具体来说:
../AppSrc/MainForm.cpp: In constructor 'C::C()':
../AppSrc/MainForm.cpp:51:9: warning: 'C::b' will be initialized after
../AppSrc/MainForm.cpp:51:6: warning: 'int C::a'
这里有什么大不了的,为什么抱怨?成员之间并不存在或可能存在相互依赖关系。原语,呵呵。
哦,我该如何关闭这个警告,或者至少让它不那么激进?
编辑:在 C++ 中有很多方法可以让自己陷入困境;成员相互依赖就是其中之一。我知道这一点并且无论如何我都会避免这种情况,就像我会避免空指针取消引用一样。
任意的初始化顺序可以是完全安全的,就像上面的代码片段一样。我对编译器无法识别此类情况并抱怨感到不满。我的意思是,它不会抱怨每个没有立即进行空检查的指针取消引用,是吗?