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

标签 c++ methods runtime virtual 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();

这给出了错误。

谢谢, 最大

最佳答案

因为你不能实例化一个抽象类,你在运行时遇到的任何类都不会有任何纯虚方法(除非你当时在构造函数或析构函数中),它们都将被覆盖非纯粹的覆盖。没有什么可检查的。

关于c++ - 如何检查是否在运行时定义了 C++ 抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316133/

相关文章:

c++ - 在编译时确定字符串是否包含特定字符

c++ - 为浮点常量调用伪析构函数的有效语法

c++ - 大规模递归函数中的段错误

c# - 如何为用户定义的按钮创建具有已知且固定值的属性?

java - 强制使用统一的构造函数和方法注释值?

java - 我可以将类添加到 sun 的 rt.jar 文件吗?

C++ 单例类与命名空间与公共(public)静态变量

c# - 如何将新操作分配给现有方法?

c - 函数的运行时间

runtime - 如何使用 C++ Builder 在运行时以编程方式构造组件?