如何在运行时检查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();
这给出了错误。
谢谢, 最大
最佳答案
因为你不能实例化一个抽象类,你在运行时遇到的任何类都不会有任何纯虚方法(除非你当时在构造函数或析构函数中),它们都将被覆盖非纯粹的覆盖。没有什么可检查的。
关于c++ - 如何检查是否在运行时定义了 C++ 抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316133/