您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> declaration of 'Superclass x' shadows a parameter是什么意思

declaration of 'Superclass x' shadows a parameter是什么意思

来源:网络整理     时间:2016/9/2 8:42:03     关键词:

关于网友提出的“ 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, 调用无参构造函数

希望你明白了。
Quote: 引用 8 楼 ls1160 的回复:

按照典型的用法写构造器的话,就不会调用系统默认的构造函数了吧quote]
以上介绍了“ declaration of 'Superclass x' shadows a parameter是什么意思”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3716897.html

相关图片

相关文章