我对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 = {};
我以为默认构造函数会自动调用?为什么我必须明确地使用他?
答案 0 :(得分:6)
我以为默认构造函数会自动调用吗?
会的。
为什么我必须明确地使用他?
你没有。
我对Weffc ++警告有一个理解问题
就是这样。一个警告。如果我们查看the documentation,我们会发现-Weffc++
代表样式指南,仅此而已。您是否希望遵循迈耶斯的风格完全取决于您。
如果您确实想要遵循该建议,可以这样做:
class B
{
public:
B() : a() {} // <-- a() in the ctor-initialiser
~B() {}
A a;
};
......或者你已经表现出来的方式。
坦率地说,我不会打扰。我不使用-Weffc++
设置。