[問題] C style轉型的盲點請教

作者: lovejomi (JOMI)   2019-10-09 21:20:26
最近在看一些COM的實作
不確定他的concrete class是不是"故意"用private 繼承
然後我看到的都是使用 C style的轉型,實作queryinterface.
結果引發了一些想法於是寫了一些測試code
https://ideone.com/fYoRWE
我的大疑問是
casting後 因為多重繼承 應該轉型後要有offset的差異
1. 如果queryinterface是在class 內實作
確實可以使用static_cast 轉型this(即使是private繼承), 達到成功的轉型
2. 由於C style 轉型 他有順序性的選擇使用c++的轉型
https://en.cppreference.com/w/cpp/language/explicit_cast
於是我就想....那如果把queryinterface抽離class變成一個non-member function, C St
yle轉型還會成功嗎? 結果是會, 但沒有辦法理解為什麼C style會成功, 他到底最後用了
什麼C++ 轉型?
3. 既然C Style能成功, 我就會認為 那用C++ cast應該也能做得到, 但真的能compile過
的只能透過reinterpret_cast, 但結果當然是offset不會變, 這樣就讓我更是不解 2. 是
怎麼做到的? 用cpp cast能做到嗎?
以上
謝謝
作者: AstralBrain   2019-10-10 00:26:00
你是不是沒有把自己貼的連結好好讀一遍...很上面的地方就有講了
作者: lovejomi (JOMI)   2019-10-10 10:43:00
沒看到耶? 你是說static_cast嗎? 但我現在private繼承incomplete class types 如果是這段 我也沒有incomplete
作者: AstralBrain   2019-10-10 14:19:00
對你是private繼承, 那頁也剛好只有一個地方提到private繼承. 去看懂他在寫什麼

Links booklink

Contact Us: admin [ a t ] ucptt.com