为什么第二个构造函数会遮盖第一个?

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);
        }
};

给我:error: declaration of 'RC2 t1' shadows a parameter
我认为编译器没有办法弄乱这些之间的区别

我在C++ 0x中使用代码块gcc

最佳答案

因为RC2(t1);是局部变量声明阴影参数t1,而不是对另一个构造函数的调用。以下代码也是有效的:

int main(int argc,char* args[])
{
  int(a);
  a = 2;
  return a;
}

笔记!在C++ 11之前,无法从C++中的构造函数调用同一类上的另一个构造函数。如果使用的是旧的C++版本,请创建一个Init()-方法,两个构造函数都将调用该方法。

关于c++ - 阴影参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6308457/

10-10 01:56