为什么第二个构造函数会遮盖第一个?
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/