c++ - 如何在 C++ 中模拟接口(interface)?

标签 c++ interface naming-conventions abstract-class

由于 C++ 缺少 Java 和 C# 的 interface 特性,那么在 C++ 类中模拟接口(interface)的首选方法是什么?我的猜测是抽象类的多重继承。 在内存开销/性能方面有什么影响? 此类模拟接口(interface)是否有任何命名约定,例如SerializableInterface

最佳答案

由于 C++ 与 C# 和 Java 不同,具有多重继承,是的,您可以创建一系列抽象类。

至于约定,由你决定;但是,我喜欢在类名前加上 I。

class IStringNotifier
{
public:
  virtual void sendMessage(std::string &strMessage) = 0;
  virtual ~IStringNotifier() { }
};

在 C# 和 Java 之间进行比较时,性能无需担心。基本上,您将只需要为您的函数或 vtable 提供一个查找表,就像任何类型的虚拟方法继承一样。

关于c++ - 如何在 C++ 中模拟接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216750/

相关文章:

c++ - 模板类的重载赋值运算符

java - 如何获取接口(interface)<T>的返回类型?

architecture - 在命名空间中分组与为类添加前缀

java - 获取泛型类型参数的正确方法

c# - XML 对象反序列化到接口(interface)

cocoa - 比 DELEGATE_TRY_PERFORM_SELECTOR_WITH_SELF 更好的名称

database - 命名数据库中的中间表

c++ - 为什么我不能在 Visual Studio 中进入这个循环

c++ - 构建 dschaefer/android-box2d 时出现问题

c++ - 是否有可能在 C++ 中枚举枚举?