在一些书中写道,声明或继承虚函数的类称为多态类。

B 类没有任何虚函数,但通过了多个 is-a 测试。

C 类有一个虚函数但不继承。

class A {};
class B : public A {};

class C
{
public:
    virtual void f () {}
};

B类或C类是多态的?

最佳答案

2003: 10.3/1 明确指出:



您实际上是自己逐字逐句地说的,所以我真的不明白问题是什么。
C(及其后代,如果添加的话)是多态的; AB 不是。

请注意,在更广泛的 OOP 意义上,您总是可以执行一些“多态”,因为 C++ 总是允许您向上转换;因此,所有继承的对象都可以被视为不同(但相关)的类型。

然而,术语“多态”在 C++ 中的定义略有不同,它更多地与您是否可以向下转型有关。如果你不想像 C++ 标准那样混淆,你可以称之为“动态多态”。

关于c++ - 多态 C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6796650/

10-16 17:59