c++ - 如何在 C++ 中定义接口(interface)?

标签 c++ oop

我正在开发一个 C++ 类,它提供了用于网络的 BSD 套接字的抽象。我想定义一个接口(interface) ISocket ,它由 CSocketMockSocket (后者用于单元测试)实现。我知道我需要定义我想要实现类的方法,以提供纯虚拟的方法,即

class ISocket {
public:
  virtual int Socket(int domain, int type, int protocol) = 0;
};

我担心的是ISocket类型的类能否被实例化。我的直觉告诉我,任何至少有一个纯虚方法的类都是一个抽象类(即接口(interface)),不能被实例化,但我内心深处有一个琐碎的担心,我需要对自动生成的方法做些什么C++ 编译器将提供的构造函数和析构函数(Effective C++ 既是礼物——当你记住你在其中阅读的所有内容时——也是诅咒——当你不记得时)。

我这样做是否正确,或者是否有我没有遵循的用 C++ 定义接口(interface)的最佳实践?

最佳答案

一般来说,你应该声明一个virtual析构函数;否则,如果您尝试在指向接口(interface)的指针上调用 delete,您将陷入未定义的行为。构造函数不存在此类问题。

哦,你是对的,不可能用纯虚拟实例化类的对象。

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

相关文章:

C++ 为成员容器中的项调用for_each中的成员函数

c++ - 如何跳出这个 do-while 循环?

ios - 模态创建类对象和设置值

javascript - 在不知道索引的情况下从数组中删除 "this"?

oop - 如何验证给定域的类图?

java - 如何从 Java 中的 X 行读取文本文件?

c++ - 类中的常量数组大小

c++ - 如何将十六进制字符串转换为无符号长整数?

c++ - 优先队列,重载少操作

android,面向对象编程与性能设计