gpt4 book ai didi

c++ - 在 C++ 中放置接口(interface)类的位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:04 28 4
gpt4 key购买 nike

我是 C++ 编程的新手,很难组织我的项目。我有一个名为 StateManager 的类,它有一个头文件和一个 cpp 文件。cpp 包含所有实现。

如果我现在想创建一个接口(interface)类:

class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod {}
};

我知道接口(interface)并不像在 C# 或 Java 中那样真正存在,但我希望多个类继承自这个“接口(interface)”。

这个类还需要头文件和cpp文件吗?或者我可以将它放在头文件中吗?

最佳答案

技术上,c++ 没有接口(interface)。但是,可以通过多重继承(或单继承,如果您的类是“基”类并且不需要从多个类继承)来“创建”接口(interface)。您的“界面”所在的位置完全取决于您。但是如果你计划使用一个类作为一个接口(interface)(没有任何实际的实现,因为技术上一个接口(interface)在子类中定义函数之前没有实现),我会把它放在它自己的头文件并声明每个函数纯虚拟:

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 中为 IStateManager 类定义一些实现,那么您实际上拥有更多抽象类而不是接口(interface)。

总而言之,我要说的是:“接口(interface)” 的任何实现都应该在其实现类的 .cpp 文件中定义。如果您计划在多个文件中使用该接口(interface),我会为其创建一个单独的 .h 文件。

关于c++ - 在 C++ 中放置接口(interface)类的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com