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

看板C_and_CPP作者 (JOMI)時間4年前 (2019/10/09 21:20), 編輯推噓2(204)
留言6則, 2人參與, 4年前最新討論串1/1
最近在看一些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能做到嗎? 以上 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.5.223 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1570627234.A.098.html

10/10 00:26, 4年前 , 1F
你是不是沒有把自己貼的連結好好讀一遍...
10/10 00:26, 1F

10/10 00:26, 4年前 , 2F
很上面的地方就有講了
10/10 00:26, 2F

10/10 10:43, 4年前 , 3F
沒看到耶? 你是說static_cast嗎? 但我現在private繼承
10/10 10:43, 3F

10/10 11:14, 4年前 , 4F
incomplete class types 如果是這段 我也沒有incomplete
10/10 11:14, 4F

10/10 14:19, 4年前 , 5F
對你是private繼承, 那頁也剛好只有一個地方提到
10/10 14:19, 5F

10/10 14:19, 4年前 , 6F
private繼承. 去看懂他在寫什麼
10/10 14:19, 6F
文章代碼(AID): #1TdTwY2O (C_and_CPP)