未初始化某些类成员时,g ++不会发出警告

zhihuifan

我有以下代码,希望gcc可以在第6行或第17行发出警告,但gcc不会这样做。

zhifandeMacBook-Pro:CppCodeExample zhifan$ cat -n main.cpp
     1  #include <iostream>
     2
     3
     4  class X {
     5  public:
     6      X() {}
     7      int getA() const { return a;}
     8      bool getB() const {return b;}
     9  private:
    10      int a;
    11      bool b;
    12  };
    13
    14
    15  int main(int argc, char *argv[])
    16  {
    17      X x;
    18      std::cout << "hello " << x.getA() << std::endl;
    19      return 0;
    20  }
zhifandeMacBook-Pro:CppCodeExample zhifan$ g++ main.cpp  -Wall -O2 -Wuninitialized 
zhifandeMacBook-Pro:CppCodeExample zhifan$

我可以收到有关类X的构造函数未初始化成员的警告吗?

PW

GCC使用-Weffc++选项(“有效C ++”选项)发出警告从4.1.2开始,我已经在所有版本上进行了尝试。

<source>: In constructor 'X::X()':
<source>:6: warning: 'X::a' should be initialized in the member initialization list
<source>:6: warning: 'X::b' should be initialized in the member initialization list
Compiler returned: 0

您可以在此处观看Godbolt上的现场演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Junit仍通过测试时发出警告

Java中未初始化的类成员不会发出任何编译器错误。但是局部变量可以。为什么?

未关闭课程时发出警告

MinGW不会发出警告

编译时,GCC不会发出警告

#Pragma Pack编译时发出警告

为什么要诠释 a = std :: max(a,x)不会发出“未初始化”警告

为什么在将未初始化的volatile指针转换为`void`时GCC会发出警告?

未明确初始化C ++全局变量时发出警告?

在这里使用@property时,为什么PyCharm会发出警告?

卸载组件时对setState发出警告

R:使用向量变量选择列时,收集会发出警告

在使用Bool和Finite 2时,为什么非穷尽模式会发出警告?

由于某些原因,在调用过程SYSPROC.ADMIN_CMD时会发出警告(“ EXPORT to ...”)。

当在rowselected / Initialize事件中使用bql查询时,Acuminator会发出警告,在何处使用它们?

日志信息未显示在控制台上,但会发出警告和错误提示

“ stderr;” 声明不会发出警告

从排序块返回会发出“在排序中使用未初始化的值”警告,但仅在显式返回时

比较未签名和已签名不会发出警告(使用const)

如果未初始化类成员,Visual Studio C ++选项将发出警告

分析CAKeyframeAnimation时发出警告

为什么未捕获的变量会发出警告?

发出警告时退出

为什么我的函数在加载页面[javascript]时不会发出警报?

当从终端在当前目录中打开时,Nautilus会发出警告

为什么 Elixir 编译器不会对某些“不可匹配”的函数发出警告?

当不包含带有 `target_sources` 的源时,CMake 不会发出警告

单击外部链接时发出警告

使用 openpyxl 时,写入 excel 的 Pandas 会发出警告