.h 或.cpp文件中的抽象类或两者兼而有之?

abstract class in .h or .cpp file or both?

本文关键字:抽象类 兼而有之 cpp 文件      更新时间:2023-10-16

我的抽象类应该放在什么地方,在.h或.cpp文件中,或者两者兼而有之?由于没有要放入.cpp文件中的实现细节?

据我了解,我只需要一个 .h 文件,因为所有函数都是虚拟的,如果我确实添加一个非虚拟函数,那么我将需要一个.cpp文件来实现该非虚拟函数。

你在第二段中的描述基本上是正确的;一个类是抽象的这一事实并不影响你如何处理它。通常的方法是将类定义放在头文件中,将实现放在源文件中。头文件在要使用类的任何地方使用;它提供了类的说明。源文件被编译和链接;它提供了实现详细信息。如果没有实现细节,则不需要源文件。

请注意,"抽象类">并不意味着"没有实现的类"。抽象类至少有一个纯虚函数。这并不意味着所有的虚函数都是纯函数,也不意味着该类没有非虚函数。相反,非抽象类可能没有成员函数,因此没有实现文件。