c++ - C++中纯虚函数的实现

标签 c++ virtual

给定以下场景,我有一个基类 MyBaseClass 和一个纯虚函数 void foo() = 0; 。两个类 MyClassAMyClassB 派生自该类 MyBaseClass。两者都实现了函数 foo()。 现在,在我从事的一个项目中,我遇到了一个从类 MyBaseClass 创建的对象,在该类上调用了函数 foo()。 有趣的是,使用的是 MyClassB 的实现。 在哪里定义它是这个实现而不是 MyClassA

最佳答案

对象的类型是 MyClassB 而不是 MyBaseClassMyBaseClass 是抽象的,无法实例化。但是,您可能有一个指针 MyBaseClass*,它指向 MyClassB 的一个实例。

如果您需要更多信息,您可能应该阅读 C++ 中的继承和多态性。

MyBaseClass base; // Compiler error, cannot instantiate abstract class
MyClassA a;
MyClassB b;

MyBaseClass* pA = &a;
MyBaseClass* pB = &b;

pA->foo(); // Uses implementation of foo in MyClassA
pB->foo(); // Uses implementation of foo in MyClassB

关于c++ - C++中纯虚函数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142595/

相关文章:

c++ - 使用 {} 的函数重载解析

c++ - static_assert 始终计算为真(avr、g++)

c++ - 如何绕过模板化成员函数不能为虚函数的限制进行设计

关于 ABC、继承和虚函数的 C++ 赋值,试图找出段错误等

c++ - C++中不带virtual的多态实现多级继承

C++ 类 : virtual and override, 或两者都不是?

c++ - 使用之字形扫描将 8x8 矩阵转换为展平 vector

c++ - 如果初始化需要shared_from_this,如何在一次调用中构建一个类?

c# - 将字符串从 .NET 传递到 native (64 位)

C++ 虚函数前向声明