.h 或.cpp文件中的抽象类或两者兼而有之?
abstract class in .h or .cpp file or both?
我的抽象类应该放在什么地方,在.h或.cpp文件中,或者两者兼而有之?由于没有要放入.cpp文件中的实现细节?
据我了解,我只需要一个 .h 文件,因为所有函数都是虚拟的,如果我确实添加一个非虚拟函数,那么我将需要一个.cpp文件来实现该非虚拟函数。
你在第二段中的描述基本上是正确的;一个类是抽象的这一事实并不影响你如何处理它。通常的方法是将类定义放在头文件中,将实现放在源文件中。头文件在要使用类的任何地方使用;它提供了类的说明。源文件被编译和链接;它提供了实现详细信息。如果没有实现细节,则不需要源文件。
请注意,"抽象类">并不意味着"没有实现的类"。抽象类至少有一个纯虚函数。这并不意味着所有的虚函数都是纯函数,也不意味着该类没有非虚函数。相反,非抽象类可能没有成员函数,因此没有实现文件。
相关文章:
- 无法创建抽象类的实例
- 用pybind11包装C++抽象类时出错
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 抽象类错误,请参阅声明" "是抽象的
- 将自定义函数传递到基抽象类中以延迟执行
- 将包含抽象类和普通类C++包导出到 Python
- C++:处理抽象类中的错误时出现问题
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 在 C++ 中使用另一个头文件中的抽象类
- ATL::CComContainedObject<contained>: C2259 无法实例化抽象类
- C++:从抽象类重写纯虚拟运算符重载
- 如何创建shared_ptr抽象类的容器
- .h 或.cpp文件中的抽象类或两者兼而有之?
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- E0322:不允许使用抽象类类型 " " 的对象
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 提升 - 类没有名为"序列化"的成员(抽象类)?
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 对纯抽象类中方法的未定义引用