相当于C++中的Java接口?

nic*_*ter 16 c++ java abstract-class overriding virtual-inheritance

可能重复:
如何在C++中声明接口?
接口如c ++中的java?

我是一名学习C++的Java程序员,我想知道C++中是否存在类似Java接口的东西,即另一个类可以实现/扩展多个类的类.谢谢.ps新来的,告诉我,如果我做错了什么.

Sta*_*ked 26

在C++中,仅包含纯虚方法的类表示接口.

例:

// Define the Serializable interface.
class Serializable {
     // virtual destructor is required if the object may
     // be deleted through a pointer to Serializable
    virtual ~Serializable() {}

    virtual std::string serialize() const = 0;
};

// Implements the Serializable interface
class MyClass : public MyBaseClass, public virtual Serializable {
    virtual std::string serialize() const { 
        // Implementation goes here.
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 您需要**虚拟继承**来模拟Java接口实现.FTFY. (4认同)
  • @Abyx那是Java特有的吗?在C++中,您可以通过指向接口的指针删除对象(如果它的析构函数被声明为虚拟).是否合适取决于应用程序.如果它不合适,那么使析构函数受到保护会强制执行该规则. (2认同)