阴影和GCC -Wshadow

时间:2018-02-20 15:03:14

标签: c++ gcc g++ standards

人们不能低估C ++中阴影警告的重要性,但是,对于看起来(对我来说)完全有效的代码的东西,会有一个阴影警告。

struct A{
    int a;
    A(int a) : a(a){}
};

在这种情况下,我没有看到编译器如何解释这种构造,而不是“使用构造函数参数初始化类成员”。那么,这笔交易是什么? Live on coliru

1 个答案:

答案 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

阴影正在继续。