1樓:陳良喬
上面的回答很精彩
我想提到的需要注意的一點是,這種轉換,向上是安全的,向下就很危險了,並且這種危險具有極強的隱蔽性,編譯器並不會給出任何提示,例如
#include
using namespace std;
class A
;class Ad : public A
void start()
商家想用自行車來糊弄人,不啟動(start)還好,編譯器並沒有給出任何提示資訊 ,連個警告都沒有,一啟動就露餡了(電量是個奇怪的數字)
2樓:鋼盅郭子
假設 A 是「自行車」
假設 Ad 是「電動自行車」
那 (new A()) 就是「自行車」
而 (A)(new Ad()) 則好比是「踩著走的電動自行車」
3樓:余天公升
不管怎麼樣,A就是A,Ad就是Ad。因為Ad從A繼承而來,有一些行為和A一致,看起來像A,所以我們可以把他當作A來對待,但是,他還是Ad。
比如說,我要寫乙個鳥籠類,可以裝進各種各樣不同的鳥,你可以考慮用乙個List《鳥》來裝。當我們要喂鳥的時候,我們並不關心這個是什麼鳥,反正給它吃就可以了,所以就把他們當成他們的父類(鳥)來看待,每乙個都呼叫一下吃這個方法。
另外,有的時候,這個父類如果是抽象類,那麼是不能直接例項化的,比如我們找不出一種就叫做「鳥」而不叫別的名字的動物,也需要通過引用轉換的方法得到。
Python中是否需要避免使用相對引用?
靈柩 我猜你說的是這種 import foofrom fooimport bar這麼做是為了防止與 PYTHONPATH 中的模組衝突,如果用相對引入,可能不知道 foo 到底是專案裡的,還是python lib 裡的。可以這樣寫 from importfoo 海洋 題主所說的,應該是類似 from...
同樣的函式引用裡為什麼使用string引用時會清空資料?
朱涵俊 改成print a 就可以正常顯示,因為a已經分配好了,main函式返回才析構。而 abc 是在引數中的,呼叫的時候先生成乙個string 臨時變數,然後用建構函式初始化,string有個引數是const char 的建構函式。呼叫完成之後,就析構這個臨時變數了,而d引用了乙個已經析構的臨時...
如何在 C 中將時間與時間戳進行轉換?
西井丶 稍微改進一下 旋鈕 的答案 public static intGetUnixStamp DateTime value int value ToUniversalTime Ticks 621355968000000000 10000000 public static DateTime From...