阴影参数

cal*_*pto 5 c++ parameters class shadow

为什么第二个构造函数会影响第一个?

class RC2{
    private;
        bool keyset;
    public:
        RC2(uint32_t t1 = 64){
            keyset = false;
        }

        RC2(const std::string KEY, uint32_t t1 = 64){
            RC2(t1);
            //setkey(KEY);
        }
};
Run Code Online (Sandbox Code Playgroud)

给我的是: error: declaration of 'RC2 t1' shadows a parameter

我认为编译器没有办法搞清楚这些之间的区别

我正在使用带有C++ 0x的代码块gcc

lar*_*moa 9

因为RC2(t1);是局部变量声明的影子参数t1,而不是对其他构造函数的调用.以下代码也有效:

int main(int argc,char* args[])
{
  int(a);
  a = 2;
  return a;
}
Run Code Online (Sandbox Code Playgroud)

注意!在C++ 11之前,没有办法从C++中的构造函数调用同一个类上的另一个构造函数.如果您使用的是旧的C++版本,请创建一个Init()构造函数调用的方法.