【发布时间】:2011-05-17 23:58:06
【问题描述】:
如何检查 C++ 抽象方法是否在运行时定义
class ABase{
public:
virtual void do1() = 0;
};
class BBase: public ABase{
public:
virtual void do1(){}
};
class CBase: public ABase{
public:
};
ABase * base = rand() % 2 ? new BBase() : new CBase();
if(&(base->do1) != 0)
base->do1();
这会出错。
谢谢, 最大
【问题讨论】:
-
没有。又有什么用呢?
-
这里没有虚方法。请参阅下面的答案。
-
当然这会产生错误 - 编译错误。还是缺少的
virtual只是一个错字/糊涂,而您是在说还是运行时错误?还是在那个有趣(和错误)的比较中编译错误?如果有,有哪些?用这样一个草率的问题是不可能说的。我投票关闭它,因为它的方式无法得到合理的回答。 -
整个代码都是假的,它在函数之外声明,你不能获取像
&base->do1这样的成员函数的地址,你只能做&ABase::do1,但编写代码的整个前提试图做问题所要求的是错误的。我认为这个问题是可以“回答”的,即使答案必须提出问题。 -
是的。这种方法在现实生活中是虚拟的。我输入问题时的错误。
标签: c++ methods runtime virtual abstract