| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:关于基类和派生类对象的问题
只看楼主 加入收藏
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
结帖率:61.9%
收藏
已结贴  问题点数:12 回复次数:3 
关于基类和派生类对象的问题
今天突然看到这个有点懵((Employee)m1).Name = "Mary";然后发现这是把派生类对象转换为基类对象,以前还没见过基类和派生类对象之间转换,请问基类对象可以转换为派生类对象吗?如果是大神就请讲解全面些,谢谢~~~
2014-02-10 18:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
這不叫轉換,是把對象視爲什麽類的問題。C的“强制轉換”稱呼誤導了多少人——其實C/C++本身這個操作都不是什麽轉換。

授人以渔,不授人以鱼。
2014-02-10 20:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
你舉例的這句代碼,其實是很無聊的,可以說毫無意義:

1.如果基類本身沒有Name字段或屬性,那麽你把子類對象m1强制視爲基類對象,就會出現基類沒有相關字段或屬性的錯誤;
2.如果子類已繼承有Name,那麽就不需要這樣轉換看法;
3.如果基類有Name字段或屬性,但子類沒有繼承,這樣這個代碼才有絲毫意義,但這又違反了類原則,屬於侵入它類内部讀寫數據的問題,因爲該子類既然沒有繼承這個東西,必定有其考慮,你這樣做是無視原先的設計,并假設自己很瞭解基類的内部構造,强行寫入本對象沒有分配空間的數據,過後這個m1對象將仍然找不到這個值。我沒測試過這種寫法到底有什麽現象,但絕對不會寫出這樣的代碼,所以不需要考究它的後果,不會深入探究。

授人以渔,不授人以鱼。
2014-02-10 20:22
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:4 
这东西我告诉你实际项目中很少有这么写 也就是书里的大师爱这么玩花活

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-02-11 15:28
快速回复:关于基类和派生类对象的问题
数据加载中...
 
   



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

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