赞 博学博学
https://en-m.jinzhao.wiki/wiki/Thunk
读了thunk的维基百科词条,很有意思。里面的例子跟你这个很像,用来解决通过B*来调用C方法时,对this 指针地址的转换(做偏移)。没提到covariance的场景。
我读不懂汇编,这俩thunk是干嘛的?
compiler是怎么让调用跳转到这个地址并执行的?和vptr结合起来。
比如,通过B* 来调用C的方法,和通过A* 来调用C的方法,
两个 vptr 指向的两张 vtable吗?两个vtable里,对于C::Clone的地址,
填的不一样?
【 在 vonNeumann 的大作中提到: 】
: 只要标准愿意引入这个特性,大小不相同不是障碍,加一个 covariant return thunk 即可
: 这种 thunk 在 C++98 的基类/子类指针的 covariance 情况下已经存在(多继承的情形)
: class A {
: ...................
--
修改:DoorWay FROM 1.85.201.*
FROM 113.138.49.*