c++ 的interface

先要说明的是,c++的关键字中并没有interface,但java和C#中有interface关键字,即接口。interface和class不同,interface仅有接口声明,而且所有的声明默认的访问权限是public而非private(是不是想到了c++中的struct?)。

对于c++来说,这相当于抽象类的概念,即其中的成员函数都是纯虚函数,只有声明,没有实现。如:

class abstractClass{
    virtual memfunc1() = 0;
    virtual memfunc2() = 0;
};

这是一个用于实现接口的纯抽象类,仅包括纯虚函数的类(一般用作基类,派生类进行具体的实现)。纯虚函数是指用=0标记的虚函数。

抽象类是不能实例化的,换句话说,它只是提供一个interface的功能,它并不实现这些纯虚函数。正如第一段中所讲,我们可以用c++中的struct来模拟interface,可以采用两种方式。

1. 采用宏定义:#define interface struct;

2. 使用typedef:typedef struct interface。

这样就可以在c++中使用interface了。

 

例:项目中用到了FLIR相机自带的SDK,查看其example时发现一些头文件中出现了interface,如下:

interface SPINNAKER_API_ABSTRACT INodeMap{。。。}当时发现其中的函数都是virtual func() = 0的形式,因此想到了是抽象类。当鼠标停留在INodeMap上时,显示的信息是struct Spinnaker::GenApi::INodeMap。正是上面所讲的struct

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值