| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:这个错误怎么改啊。。。??B类参数有问题
只看楼主 加入收藏
chengUFO
Rank: 1
等 级:新手上路
帖 子: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
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分: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
Rank: 2
来 自:虚无缥缈处
等 级:论坛游民
帖 子:28
专家分:98
注 册:2009-4-13
收藏
得分: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
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:4 
和二楼说的一样O(∩_∩)O哈!!
真的是因为A基类里面没有默认的构造函数所致!

编程语言视频教程在线播放学习
2009-11-11 21:07
chengUFO
Rank: 1
等 级:新手上路
帖 子:65
专家分:5
注 册:2009-8-8
收藏
得分:0 
非常感谢各位详细讲解。。。。
小弟明白了。。。。
2009-11-11 22:32
快速回复:这个错误怎么改啊。。。??B类参数有问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017546 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved