如何检查C++抽象方法是否在运行时定义

Max*_*Max 3 c++ methods virtual runtime abstract

如何检查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();
Run Code Online (Sandbox Code Playgroud)

这给出了错误.

谢谢,马克斯

CB *_*ley 14

由于您无法实例化一个抽象类,因此您在运行时遇到的任何类都不会有任何纯虚方法(除非您当时在构造函数或析构函数中),它们都将被覆盖为非纯超控器.没有什么可以检查的.