人们不能低估C ++中阴影警告的重要性,但是,对于看起来(对我来说)完全有效的代码的东西,会有一个阴影警告。
struct A{
int a;
A(int a) : a(a){}
};
在这种情况下,我没有看到编译器如何解释这种构造,而不是“使用构造函数参数初始化类成员”。那么,这笔交易是什么? Live on coliru
答案 0 :(得分:4)
这段代码怎么样?
A(int a) : a(a){ ++a; }
哪一个增加了?构造函数或成员变量的参数?
int main() {
A a(5);
std::cout << "a.a = " << a.a << std::endl;
}
// gives: a.a = 5
或者这个怎么样?
A() : a(a){ }
warning: ‘A::a’ is initialized with itself
阴影正在继续。