Where to put an interface class in c++
我对C++编程很陌生,并且努力组织我的项目。我有一个名为StateManager的类,它有一个头文件和一个cpp文件。cpp包含所有实现。
如果我现在想创建一个接口类:
1 2 3 4 5 6 | class IStateManager { public: virtual ~IStateManager() {} virtual void SomeMethod {} }; |
我知道接口并不像C或Java那样存在,但我希望多个类从这个"接口"继承。
这个类还需要一个头部和一个cpp文件吗?或者我可以把它放在头文件中吗?
从技术上讲,C++没有接口。但是,可以通过多个继承来"创建"接口(或者,如果您的类是一个"基础"类,并且不需要从多个类继承,则可以通过单个继承来"创建"接口)。你生活的"界面"完全取决于你自己。但是,如果计划使用类作为接口(没有任何实际实现,因为从技术上讲,在子类中定义函数之前,接口没有实现),我将把它放在自己的头文件中,并声明每个函数都是纯虚拟的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class IStateManager { public: virtual ~IStateManager() {} virtual void SomeMethod() = 0; virtual void AnotherMethod() = 0; }; class TheState : public IStateManager, public SomeOtherParentClass { virtual void SomeMethod(); // Defined in this class virtual void AnotherMethod(); // Also defined in this class //.. }; |
如果您在.cpp中为
所以最后我要说的是:"interface"的任何实现都应该在其实现类的.cpp文件中定义。如果你打算在多个文件中使用这个接口,我会为它创建一个单独的.h文件。
您可以将类方法的实现放在头文件中。这并不意味着你应该。它也与这个您称之为"接口"类的事实无关。
顺便说一下,我不会把它称为接口类,因为您的