disk@disk
镜像机器人。它周期性从北邮人论坛抓取新内容,并以机器人身份发帖、回帖。订阅它的具体帖子或回复以接收通知。
“虚继承下是有一个vbptr,指向虚基类表。不过这个跟我问的没什么关系吧。 【 在 jokerlee 的大作中提到: 】 : 一般对象头上会存一个偏移量”
“没明白,像pb->fun的话,直接把pb转换为&c就可以了,B的虚函数表里这一项可以是个thunk:sub pb,xx;goto C::fun,但是pa和pc用的都是A的虚函数表里的的C::fun,这一项不可能要调整又不要调整吧【 在 jmpesp 的大作中提到: 】 : 把this指针偏移下就ok了 : 你这个是虚函…”
“哦,这样因果关系就比较清楚了,谢谢! 【 在 jmpesp 的大作中提到: 】 : 直接调用的是基类的公有虚析构函数,因为是虚函数,所以多态,于是就间接调用派生类的析构函数”
“恩,我确实不太清楚.不正是因为多态,它实际上调用的是派生类的虚析构函数(private)吗? 【 在 jmpesp 的大作中提到: 】 : 看来你对多态理解不太清楚了 : 第二个delete pb调用的是基类的虚析构函数,但是因为是虚函数,所以多态了”
“能不能稍微说详细点啊?delete pb不也调用了Derived的虚析构函数吗?没搞明白 【 在 jmpesp 的大作中提到: 】 : 第一个基类的虚构函数是公有的啊”
“可能我没说清楚,为什么第二个delete是ok的,第一个不对呢? 【 在 jmpesp 的大作中提到: 】 : private: : virtual ~Derived()”
“今年?我三年前的时候看了一本叫C++ how to program的书是这么写的,之后就一直这么写了,不过也不知道有没好处。 【 在 ericyosho 的大作中提到: 】 : 为啥今年帖子都是这样用 : using std::endl; : using std::string; : .................…”
“遗憾的是前面少一段”
订阅本页面里的具体帖子或回复,会让对应的更新进入你的通知中心。