搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 这个错误怎么改啊。。。??B类参数有问题
标题:
这个错误怎么改啊。。。??B类参数有问题
只看楼主
chengUFO
等 级:
新手上路
帖 子:65
专家分:5
注 册:2009-8-8
结帖率:
73.33%
楼主
已结贴
√
问题点数:20 回复次数:4
这个错误怎么改啊。。。??B类参数有问题
#include<iostream>
using namespace std;
class A{
int x;
public:
A(int a):x(a)
{cout<<"constructing A\n";
}
};
class B:public A{
public:
B(){
cout<<"constructing B\n";
}
};
int main()
{
B b;
return 0;
}
搜索更多相关主题的帖子:
参数
2009-11-10 22:27
qlc00
等 级:
黑侠
威 望:
2
帖 子:157
专家分:540
注 册:2007-11-26
第
2
楼
得分:8
因为你在主函数中声明了B b,这个声明应该对应一个默认的构造函数,而B类是从A公有继承的,而A中没有默认的,所以会报错!
#include<iostream>
using namespace std;
class A{
int x;
public:
A(){
cout<<"constructing A\n";
}
A(int a):x(a)
{cout<<"constructing A\n";
}
};
class B:public A{
public:
B(){
cout<<"constructing B\n";
}
};
int main()
{
B b;
return 0;
} 在A中添加一个默认的构造函数就行了!
Anything is possible!
2009-11-10 22:55
quietstar
来 自:虚无缥缈处
等 级:
论坛游民
帖 子:28
专家分:98
注 册:2009-4-13
第
3
楼
得分:8
这个不是B类参数的问题,而是B类的构造函数的问题。在构造一个子类的对象时,首先会调用基类的构造函数,对构造函数进行初始化。B b这个语句,构造B的一个对象,由于没有参数且继承自A,因此会调用A的没有参数的构造函数,但A类并没有不带参数的构造函数,因此编译器会提示没有合适的构造函数。修改如下,供参考:
#include<iostream>
using namespace std;
class A
{
private:
int x;
public:
A(int a):x(a)
{
cout<<"constructing A\n";
}
};
class B:public A
{
public:
B(int a):A(a)
{
cout<<"constructing B\n";
}
};
int main()
{
B b(7);
return 0;
}
流光穆然去,美梦随佳人。薄雾似成雨,芳樽清茶冷。郁郁清风外,悠然不复生。
2009-11-10 23:16
newCpp
来 自:火星
等 级:
职业侠客
威 望:
3
帖 子:256
专家分:375
注 册:2009-8-17
第
4
楼
得分:4
和二楼说的一样O(∩_∩)O哈!!
真的是因为A基类里面没有默认的构造函数所致!
编程语言视频教程在线播放学习
2009-11-11 21:07
chengUFO
等 级:
新手上路
帖 子:65
专家分:5
注 册:2009-8-8
第
5
楼
得分:0
非常感谢各位详细讲解。。。。
小弟明白了。。。。
2009-11-11 22:32
5
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-291850-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.143316 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved