c++ - 抽象方法和纯虚函数是一回事吗?

标签 c++ function virtual

据我所知,抽象方法和纯虚函数都不提供任何功能......所以我们可以说它们是同一件事吗?

另外,假设一个类(不一定声明为抽象)包含许多实现的方法(不是抽象的或虚拟的),但包含一个纯虚函数。那么这个类是抽象的吗?

最佳答案

是的,它们是一回事。在 C++ 中,抽象方法只是描述纯虚函数特性的另一种方式。两者都只是意味着一个没有提供实现的方法,需要在子类中实现,然后才能实际实例化该类。

C++ 中纯虚函数和抽象类的情况是相似的,因为它们本质上意味着完全相同的东西。任何抽象类必须至少有 1 个纯虚函数,否则它可以被实例化并且不会是抽象的。同样,任何具有至少 1 个纯虚函数的类都必须是抽象的,因为需要对其进行扩展,以便实际实现方法。

因此,一个类是抽象的当且仅当它包含至少 1 个纯虚函数/抽象方法。

后来,像 Java 和 C# 这样的语言使这样的事情更加明确,允许使用特殊关键字来定义类抽象而不是纯虚拟函数的存在。 C++ 允许您做与这些语言相同的事情,但它们只是更明确一点。 :D

关于c++ - 抽象方法和纯虚函数是一回事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574852/

相关文章:

c++ -/usr/bin/ld : cannot find -lboost_system-mt

c# - 如何从 C++ 后台任务(Windows 通用应用程序)调用 C# 函数?

python - 如何获取Python函数的pickle依赖项?

Java 方法调用比 C++ 中的虚拟方法调用更快?

C++:包含类实例的 union 会调用错误的虚函数

c++ - 增量时间始终为零

c++ - 如何使用 PathCreateFromUrlA API

PHP 网站 - mysql 数据库 - 函数数组

python - 是否可以检测python中函数返回值的数量?

c++ - 为什么允许通过基类的指针调用派生类的私有(private)虚方法?