C++ .h或.cpp文件中的抽象类,还是两者都有?

C++ .h或.cpp文件中的抽象类,还是两者都有?,c++,C++,我的抽象类应该放在哪里,在.h或.cpp文件中,还是两者都放?因为没有要放入.cpp文件的实现细节 根据我的理解,我只需要一个.h文件,因为所有函数都是虚拟的,如果我添加了一个非虚拟函数,那么我需要一个.cpp文件来实现该非虚拟函数。您在第二段中的描述基本正确;类是抽象的这一事实并不影响处理它的方式。通常的方法是将类定义放在头文件中,将实现放在源文件中。头文件用于类将要使用的任何地方;它提供了类的描述。编译并链接源文件;它提供了实现细节。如果没有实现细节,就不需要源文件 请注意,“抽象类”并不表

我的抽象类应该放在哪里,在.h或.cpp文件中,还是两者都放?因为没有要放入.cpp文件的实现细节


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

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


请注意,“抽象类”并不表示“没有实现的类”。抽象类至少有一个纯虚函数。这并不意味着所有虚函数都是纯函数,也不意味着类没有非虚函数。相反,一个非抽象类可能没有成员函数,所以没有实现文件。

您的理解是错误的——实现可以进入头文件。C++标准中没有任何东西限制您将所有的东西(所有类、声明、定义和实例化包含在内)放在单个文件中。您必须拥有的唯一东西(如果您想要编译库或可执行文件)是一个具有入口点aka
main
函数的源文件。剩下的就留给开发者了。当然,除非实现它的所有类都在源文件中,否则将接口放在源文件中并打算重用它是没有多大意义的。包含源文件通常不是一个好主意。