| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 933 人关注过本帖
标题:[求助]问两个问题,能解答一下么
只看楼主 加入收藏
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
结帖率:100%
收藏
 问题点数:0 回复次数:10 
[求助]问两个问题,能解答一下么

类Class B从Class A派生,哪么Class A *a=new Class B(..)表达式合法么?为什么啊?

char **p,a[20][10];
p=a在以后的程序中会出现什么问题?为什么?

搜索更多相关主题的帖子: 解答 
2006-06-08 12:57
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

基类(图形) --> 派生类(三角形)
他们之间的关系:
has --> a
显然 基类 相对于 派生类 来说是 高阶

我觉得这就象是强制类型转换
相当于:
Class B *b=new Class B(..);
Class A *a=(Class A*)b;
A 比 B 高阶 所以成功
反过来就不行
举例:
1。int x1=1;float x2=x1; //x1 比 x2 低阶,成功
2。float x1= 2.3 int x2=x1;//x1 比 x2 低阶,会导致“失真”

[此贴子已经被作者于2006-6-8 14:18:21编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-08 13:49
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

呃,wfpb,注意一点,Class A *a=(Class *)b;不是强制类型转换,因为这个过程只存在指针类型转换,跟强制类型转换不同


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-08 13:55
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
只要指针指的东西,它的内容
被指的对象有就行了
小指针可以指大东西

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-08 14:23
stylev
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2006-5-30
收藏
得分:0 


类Class B从Class A派生,哪么Class A *a=new Class B(..)表达式合法么?为什么啊?

class A
{....};

class B:public A
{....};
显然,B中包括A的成员...
定义A指针对象,当然可以分配B那么大的空间.只是有些浪费罢了...
---------------------------------------------------


char **p,a[20][10];

p=a在以后的程序中会出现什么问题?为什么?



用标准的gcc/g++编译器都不能编译通过.......
p是二级指针,只能指向一级指针的自身地址.
而a只是指向char [3][4]的常量指针,类型不相,不相批配


E-mail/MSN: stylev@
2006-06-08 15:48
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 

这样用指针
char *p,(*q)[2],a[3][2]={'1','2','3','4','5','6'};
p=reinterpret_cast<char*>(a);
for(int i=0;i<6;i++)
cout<<p[i]<<' ';
cout<<endl;
q=a;
for(i=0;i<3;i++)
for(int j=0;j<2;j++)
cout<<q[i][j]<<' ';


2006-06-09 11:33
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

基类(图形) --> 派生类(三角形)
他们之间的关系:
is--> a

[此贴子已经被作者于2006-6-9 11:44:13编辑过]


2006-06-09 11:43
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

图形是一个三角形?我不记得书上怎么写的了,我只是依据感觉写的,我认为图形包括了三角形

就算是is-->a 我也认为是这样的

基类(图形) --> 派生类(三角形)
他们之间的关系:
a <-- is

三角形是图形


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-09 17:34
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
o
不好意思是我写错了

2006-06-09 18:09
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

哦,理解万岁
基类 ->|-----|
     |-----|


子类 ->|-----|
     |-----|继承的基类
----------------
     |-----|
     |-----|自己又添加的东西
基类一个指针能指的东西,子类都有,你要什么给什么,为什么不可以
那三角形什么的太复杂了
反过来为什么不可以
因为系统不知道你会不会用基类的指针来调用子类的东西,所以不可以


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-10 19:48
快速回复:[求助]问两个问题,能解答一下么
数据加载中...
 
   



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

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