gpt4 book ai didi

c++ - GCC 警告初始化顺序与声明顺序不匹配

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:20 26 4
gpt4 key购买 nike

以下代码:

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++ 中有许多搬起石头砸自己脚的方法;成员相互依赖就是其中之一。我知道这一点,但无论如何我都会避免它,就像我会避免空指针取消引用一样。

任意初始化顺序都可以非常安全,就像上面的代码片段一样。我对编译器不识别此类情况并无论如何提示感到不满。我的意思是,它不会提示每个没有立即进行空检查的指针取消引用,对吗?

最佳答案

在此特定示例中,可以安全地忽略警告。如果他们相互依赖,你就会有问题。您可以使用 -Wno-reorder 将其关闭。

但是最好重新排序。这可能对编译器没有影响,但您会养成按成员出现的顺序初始化成员的习惯,这是一件好事。

关于c++ - GCC 警告初始化顺序与声明顺序不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10836039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com