【发布时间】:2019-04-10 17:19:16
【问题描述】:
我是 C++ 新手,这是我在这里的第一篇文章。我正在尝试了解初始化程序列表。问题是我越来越糊涂了。我做了一个简单的程序,没有用,但是我收到了一个我不明白的警告。
#include <iostream>
using namespace std;
class Base{
private:
string monkey2 = "";
string monkey1 = "";
public:
Base(string) : monkey2{monkey1}{
cout << "monkey1 " << monkey1 << endl;
cout << "monkey2 " << monkey2 << endl;
}
};
int main()
{
return 0;
}
我得到的警告是:
field 'monkey' is uninitialized when used here
还有一个箭头指向public:正下方的行。
奇怪的是,如果我改变字符串的顺序:
private:
string monkey2 = "";
string monkey1 = "";
public:
收件人:
private:
string monkey1 = "";
string monkey2 = "";
public:
警告消失了,我不明白为什么。我可以使用 g++ 编译它,但是当我的编辑器 vim 与 YCM 和 Clang 7.0.0 一起使用时,我会收到警告。我试图在 g++ 中尽可能多地激活警告,但我无法得到相同的警告。是我的代码还是。还是Clang?
【问题讨论】:
标签: c++ class g++ llvm-clang initializer-list