我对Weffc++警告有一个理解上的问题。


#include <iostream>

class A
{
public:
   A() {}
   ~A() {}
   void test() { std::cout << "Hello world\n"; }
};

class B
{
public:
   B() {}
   ~B() {}
   A a;
};

int main()
{
   B b;
   b.a.test();
   return 1;
}

如果我编写或使用初始化列表,我没有问题。
A a = {};

我以为默认构造函数会自动调用?为什么我必须显式地使用他?

最佳答案



它会。



你不知道



就是这样一个警告。如果我们查看the documentation,就会发现-Weffc++表示样式指南,仅此而已。是否要遵循迈耶斯的风格完全取决于您。

如果您确实想遵循建议,则可以这样操作:

class B
{
public:
   B() : a() {}   // <-- a() in the ctor-initialiser
   ~B() {}

   A a;
};

…或您已经显示的方式。

坦白说,我不会打扰。我不使用-Weffc++设置。

关于c++ - GCC -Weffc++警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43188038/

10-13 04:58