相当于C++中的Java接口?
2022-09-01 14:37:40
我是一名学习C++Java程序员,我想知道C++中是否有类似Java接口的东西,即另一个类可以实现/扩展多个类的类。谢谢。p.s. 新来的,所以告诉我,如果我做错了什么。
我是一名学习C++Java程序员,我想知道C++中是否有类似Java接口的东西,即另一个类可以实现/扩展多个类的类。谢谢。p.s. 新来的,所以告诉我,如果我做错了什么。
在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.
}
};
要模拟Java,您可以使用只有纯虚函数的普通基础。interface
您需要使用虚拟继承,否则可能会获得重复继承:同一类可以在C++中多次成为基类。这意味着在这种情况下,此基类的访问将不明确。
C++没有提供Java的确切等价物:C++,重写虚函数只能在具有虚函数声明的类的派生类中完成,而在Java中,a中方法的重写器可以在基类中声明。interface
interface
[示例:
struct B1 {
void foo ();
};
struct B2 {
virtual void foo () = 0;
};
struct D : B1, B2 {
// no declaration of foo() here
};
D
继承 too 函数声明:和 。B1::foo()
B2::foo()
B2::foo()
是纯粹的虚拟,也是; 不重写,因为 不是 的派生类。D::B2::foo()
B1::foo()
B2::foo()
B2
B1
因此,是一个抽象类。D
--结束示例]
无论如何,你为什么要在C++中模仿Java的任意限制呢?
编辑:添加了说明示例。