[问题] 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