由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个c++ virtual base class的问题
相关主题
C++ Q21: size of virtual tableC++ Q96: function inheritance
问几个跟C++有关的面试题请教template class怎么处理Inheritance问题(面试题)
a virtual table question by JP morganvirtual table存在memory的哪块啊?
Virtual pointer是每个object都有一个吗?one C++ question?
现在招个会C++的人真难C++ Q52: (C6)
微软C++面试题virtual destructor (C++)问题
c++疑难问题。。问个C++模板定义的问题
【回报本版】英伟达电面试第一轮+明天第二轮求祝福virtual destructor的地址在virtual table里面吗?
相关话题的讨论汇总
话题: class话题: virtual话题: mbase话题: public话题: vf
进入JobHunting版参与讨论
1 (共1页)
l*******y
发帖数: 1498
1
If you inherit a base class as virtual, only one subobject of that class
will ever appear as a base class. 下面这个例子:
#include
#include
using namespace std;
class MBase {
public:
int i_base;
virtual char* vf() const = 0;
virtual ~MBase() {}
};
class D1 : virtual public MBase {
public:
char* vf() const { return "D1"; }
};
class D2 : virtual public MBase {
public:
char* vf() const { return "D2"; }
};
// MUST explicitly disambiguate vf():
class MI : public D1, public D2 {
s**x
发帖数: 7506
l*******y
发帖数: 1498
3
是我搞错了。。。以为所有的object都共享一个copy
l*****a
发帖数: 14598
4
每个类有自己的Vtable,然后constructor会生成自己的Vptr指向自己的Vtable。

【在 l*******y 的大作中提到】
: If you inherit a base class as virtual, only one subobject of that class
: will ever appear as a base class. 下面这个例子:
: #include
: #include
: using namespace std;
: class MBase {
: public:
: int i_base;
: virtual char* vf() const = 0;
: virtual ~MBase() {}

s**x
发帖数: 7506
5
你好像把 downcast/upcast 搞反了。
1 (共1页)
进入JobHunting版参与讨论
相关主题
virtual destructor的地址在virtual table里面吗?现在招个会C++的人真难
求教:这个程序为什么不能编译?微软C++面试题
请教一个const和non const的C++问题c++疑难问题。。
c++ vs Java virtual 实现(Y家)【回报本版】英伟达电面试第一轮+明天第二轮求祝福
C++ Q21: size of virtual tableC++ Q96: function inheritance
问几个跟C++有关的面试题请教template class怎么处理Inheritance问题(面试题)
a virtual table question by JP morganvirtual table存在memory的哪块啊?
Virtual pointer是每个object都有一个吗?one C++ question?
相关话题的讨论汇总
话题: class话题: virtual话题: mbase话题: public话题: vf