討論貼 關於父實子虛的疑問???

2021-07-04 08:46:13 字數 862 閱讀 2364

關於這篇文章,還沒有得到最後答案,只是在這裡記錄一筆,但是歡迎討論~~將來解決了問題,再專門出貼解答~

父實子虛就是:父類非虛函式,子類繼承變成虛函式,會發生什麼

想法很奇葩,執行結果更是奇葩,大家看應該怎麼解釋一下,執行環境是vs2012 release win32平台

**:

#includeusing namespace std;

class a

virtual void fun()

};class b : public a

void fun()

};class c : public b

void fun()

};int main(void)

因此,我們得出結論,在向上強制轉換過程中,使用指標和引用不會造成切割,而使用直接賦值會造成切割。

向下強制型別轉換

使用dynamic_cast進行向下強制型別轉換。使用此關鍵字有一下幾個條件

1.必須有虛函式

2.必須開啟編譯器的rtti開關(vc6: progect-> settings -> c/c++ tab ->category[c++ language]-> enable rtti)

3.必須有繼承關係

base *b = new derived;  

derived *d = dynamic_cast(b);

if(!d)

本例子中,符合以上條件,轉換成功。否則,會丟擲std::bad_cast異常,轉換返回null

因此,我們可以使用dynamic_cast來判斷兩個類是否存在繼承關係

討論 關於跨平台

跨平台是軟體的乙個重要指標。一般程式可分為平台無關和平台相關兩部分,平台相關部分主要涉及外圍裝置 如串列埠 鍵盤 滑鼠 lcd等 和作業系統api 如定時器 互斥鎖 檔案系統操作 執行緒操作等 除了程式本身的跨平台需求外,還有種應用是對目標機的模擬,例如在pc上模擬一些嵌入式平台的應用,一來可以方便...

關於引用的討論

鄭飛龍 17 17 04 這個是一道面試題,不知道這題是什麼意思?beyond jzk 17 19 55 我也弄不明白.beyond jzk 17 20 15 我感覺輸出應該是false true 鄭飛龍 17 20 45 答案就是這樣 鄭飛龍 17 20 49 你是怎麼看出來的 beyond jz...

關於zookeeper的討論

zookeeper作為分布式集群廣泛使用的應用程式協調服務集群。它的特點就不說了,很多人分析過。前段時間微博上說到zk有一些問題,其實只是某些場合下zk使用需要小心,這裡列舉一下 list 1 zk不適合做大資料量的儲存,簡單來說就是不適合做公用儲存。原因很簡單,每個資料要同步到所有server才返...