GCC -Weffc ++警告

时间:2017-04-03 15:01:40

标签: c++ gcc

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

  

main.cpp:在构造函数'B :: B()'中:   main.cpp:13:1:警告:'B :: a'应该在成员初始化列表中初始化[-Weffc ++]    B(){}    ^

#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 = {};

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

1 个答案:

答案 0 :(得分:6)

  

我以为默认构造函数会自动调用吗?

会的。

  

为什么我必须明确地使用他?

你没有。

  

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

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

如果您确实想要遵循该建议,可以这样做:

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

   A a;
};

......或者你已经表现出来的方式。

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