| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:[求助]关于继承的问题
只看楼主 加入收藏
RL720
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2005-11-6
收藏
 问题点数:0 回复次数:8 
[求助]关于继承的问题
#include<iostream.h>

class A
{
public:
int a;
};

class B:public A
{
public:
int b;
};

class C:public A
{
public:
int c;
};

class D:public B,public C
{
public:
int d;
};

void main()
{
A aa;
B bb,*pB;
C cc;
D dd;
aa.a=1;
bb.a=2;
cc.a=3;
pB=&dd;
cout<<bb.a<<'\n'
<<pB->a<<'\n'
<<dd.B::a<<'\n';
}

我是想用一个指向基类的指针指向派生类的对象来解决二义性问题

应该输出 2 2 2 阿

结果并不如此

高手指点一下~

谢过~
搜索更多相关主题的帖子: 继承 
2005-11-09 18:55
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
收藏
得分:0 
你的程序并不存在二义性,因为对象dd的a并没有显式地赋值,所以是个无法确定的数

2005-11-09 21:53
yamz_1983
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-11-7
收藏
得分:0 

都是public数据成员,这样数据对派生类都是可见的,好像不能解决二义性,不知是不是这样,感觉数据成员为public违背了类设计封装性


2005-11-09 22:11
RL720
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2005-11-6
收藏
得分:0 
以下是引用zcx8532在2005-11-9 21:53:18的发言:
你的程序并不存在二义性,因为对象dd的a并没有显式地赋值,所以是个无法确定的数

如果没有赋值的话不是应该继承基类的值么


2005-11-10 19:54
RL720
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2005-11-6
收藏
得分:0 
以下是引用yamz_1983在2005-11-9 22:11:30的发言:

都是public数据成员,这样数据对派生类都是可见的,好像不能解决二义性,不知是不是这样,感觉数据成员为public违背了类设计封装性

跟public没关系拉
只是一个小程序方便解决问题用的


2005-11-10 19:56
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
收藏
得分:0 
[原创]
bb和dd是两个不同的对象,你只是把bb中的a赋值,而pb指针指向的是dd,而不是bb,也就是说dd中的bb部分的变量a还是没有被赋值

2005-11-11 11:50
zhubian
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-10-31
收藏
得分:0 

上面大哥说得很对!呵,支持一下,让我明白了一些我很久都不明白的问题,(我只会用虚基类的方法来防止二义性的发生 )

2005-11-11 16:19
RL720
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2005-11-6
收藏
得分:0 

啊啊....改成用构造函数赋值就可以了~~
class A

{

public:

int a;

A(){a=1;}

};

这样就行~~


2005-11-11 23:23
sailer
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-10-12
收藏
得分:0 
观点都被你们说了,我也没有什么说的了。看大家的发表还是学习了很多知识啊。

希望大家多多配合他人,多多帮助他人。 支持国家的 产品,尽量不买外国货。
2005-11-12 00:33
快速回复:[求助]关于继承的问题
数据加载中...
 
   



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

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