关于网友提出的“ declaration of 'Superclass x' shadows a parameter是什么意思”问题疑问,本网通过在网上对“ declaration of 'Superclass x' shadows a parameter是什么意思”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: declaration of 'Superclass x' shadows a parameter是什么意思
描述:class Superclass
{
public:
Superclass(int);
}
class Subclass : public Superclass
{
public:
Subclass(int);
}
按如上方式的基类和子类的带参数的构造函数。
如果按照一般的方式子类的构造函数应该是:
Subclass::Subclass(int x): Superclass(x)
{ . . . }
但如果我这样做
Subclass::Subclass(int x):
{
Superclass::Superclass(x);
}
就会报出这样的错
error: no matching function for call to `Superclass::Superclass()‘
error: declaration of 'Superclass x' shadows a parameter
error: no matching function for call to `Subclass::Subclass ()‘
请教各位大神,declaration of 'Superclass x' shadows a parameter 是什么意思的?
这是为什么错了?谢谢,初学c++。多多指教!~~~
解决方案1:
//Case 1
struct A
{
//编译器会按需插入默认构造函数
};
A a; //OK
//Case 2
struct B
{
//因为有了自定义的构造函数,编译器将不再生成默认构造函数
B(int x){}
};
B b; //需要调用默认构造函数,error
//Case 3
struct C
{
//因为有了自定义的构造函数,编译器将不再生成默认构造函数
C(int x){}
//我可以自己加上无参构造函数
C(){}
};
C c; //OK, 调用无参构造函数
希望你明白了。