CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

c++ 基本问题

楼主dufr()2005-08-01 12:37:18 在 C++ Builder / 基础类 提问

TObject   *   p1   =   new   TObject();  
            TForm   *   f   =   new   TForm(Application);  
            f   =(TForm   *   )   p1;  
            f->Caption   =   "";  
   
  执行到最后一句出错  
   
   
  为什么  
  问题点数:8、回复次数:11Top

1 楼FengSC(小猪快跑)回复于 2005-08-01 12:44:48 得分 0

这个代码有问题,f=(TForm*)pl;这句将f赋值为pl,后面的f->Caption相当于调用pl->Caption,而这样显然是错误的。Top

2 楼dufr()回复于 2005-08-01 12:51:48 得分 0

p1不是转成TForm了吗?  
  Top

3 楼dufr()回复于 2005-08-01 12:54:30 得分 0

如果这样呢  
  TObject     p1   ;  
            TForm     f   ;  
            f   =   p1;  
            f.Caption   =   "";  
   
  会出错吗  
  Top

4 楼FengSC(小猪快跑)回复于 2005-08-01 13:06:55 得分 0

pl被强制转换成了TForm,但是pl还是pl,就象即使给你改了个名字,你还是你。Top

5 楼psc88()回复于 2005-08-01 13:22:14 得分 0

upTop

6 楼Maconel(Maconel)回复于 2005-08-01 16:59:33 得分 0

pl还是一个TObject类,这样转换,只不过是将一个TForm*型的指针指向了它而已。  
  就好象一辆自行车,你就算给他挂上宝马的标志,它也还是辆自行车。Top

7 楼syd1207(既然选择远方,便只顾风雨兼程。。。)回复于 2005-08-01 17:04:33 得分 0

楼上所言甚是!~Top

8 楼Nocky(漂流)回复于 2005-08-01 20:44:14 得分 0

类型转换在C++中只可以向上转,不可以向下转,就是说只可以把子类对象的指针转换为父类的指针类型,而不可以把父类指针转换成子类的指针,  
  主跟楼上所说,自行车是父类,派生出宝马,你把宝马转换成自行车是可以的,去掉两个轮子,跟一大堆东西即可,可是你要把自行车转换成字宝马,非要它的第3、4个轮子转,它有没有啊?  
  Top

9 楼raystone(ray)回复于 2005-08-02 08:28:39 得分 0

pl还是一个TObject类,这样转换,只不过是将一个TForm*型的指针指向了它而已。  
  就好象一辆自行车,你就算给他挂上宝马的标志,它也还是辆自行车。Top

10 楼sliverpp()回复于 2005-08-02 08:31:56 得分 0

我认为转换时进行显式类型描述是编译器的一种预防措施,对于指针来说,其实质还是制了个地址,而这地址的大小,布局的解释还是根据进行指针定义时使用的类型Top

11 楼dufr()回复于 2005-08-02 08:38:50 得分 0

地址的大小,布局的解释  
   
  就是不明白这点Top

相关问题

  • c的基本知识
  • c 基本功问题
  • C++基本类说明
  • 请教C++基本概念
  • c++基本问题求解
  • 一个C++的基本问题
  • 关于C#的两个基本问题
  • 2个c++基本问题? 80分
  • C++的四个基本问题
  • 求救c#的基本问题

关键词

  • c++
  • 指针
  • 转换
  • p1
  • 自行车
  • tform
  • 宝马
  • pl
  • 类
  • tobject

得分解答快速导航

  • 帖主:dufr

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo