| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 466 人关注过本帖
标题:[求助]继承问题
只看楼主 加入收藏
幽灵嫖客
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-1-15
收藏
 问题点数:0 回复次数:4 
[求助]继承问题
比如下面代码:
#include <iostream>
using namespace std;
class A
{
private:
double x,y;
public:
A(double q,double w)
{
x=q;
y=w;
}
A()
{
x=0.0;y=0.0;
}
void showA()const
{
cout<<"x= "<<x<<" y= "<<y<<endl;
}
};
class B:public A
{
private:
char ch;
public:
B(double z,double r,char c1)
{
A(z,r);
ch=c1;
}
void show()const
{
(*this).showA();
cout<<"ch= "<<ch<<endl;
}
};
void main()
{
B b1(2.0,3.0,'n');
A a1(5.0,6.0);
b1.show();
a1.showA();
}
B类的构造函数B(double z,double r,char c1)
{
A(z,r);
ch=c1;
}
好像A(z,r)没有起作用。
就是即使先调用A类默认的构造函数创建A的对象,那么进入B的构造函数体时,这个
A(z,r)怎么解释?难道又建一个A类的对象?
但输出的是默认构造函数建立的对象内容!
还有个问题就是继承类B不需要默认的构造函数吗?
搜索更多相关主题的帖子: 继承 
2007-05-11 06:38
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
B(double z,double r,char c1)
{
A(z,r);
ch=c1;
}

这样调用的是类A的默认构造函数,继承中规定了,在派生类实例化前,就会先构造基类对象。
所以这里你在数据成员被初始化后再调用基类构造函数是不行的。
B(double z,double r,char c1):A(z,r)
{
ch=c1;
}
这样做!

Fight  to win  or  die...
2007-05-11 09:07
幽灵嫖客
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-1-15
收藏
得分:0 
那我用这个构造函数
B(double z,double r,char c1)
{
A(z,r);
ch=c1;
}
本来已经创建了A的对象了,再B的构造函数里面再调用
A(z,r);这条语句有什么作用呢?好像是可有可无的!

C primer plus
2007-05-11 12:07
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 
2007-05-11 14:02
jiangzw625
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2006-3-27
收藏
得分:0 
是创建一个临时的A类对象。跟继承一点关系也没有

马马乎乎
2007-05-11 20:18
快速回复:[求助]继承问题
数据加载中...
 
   



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

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