2019独角兽企业重金招聘Python工程师标准>>>

一、接口的定义

有时候,我们得提供一些接口给别人使用。接口的作用,就是提供一个与其他系统交互的方法。其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供给外部的接口来与你进行通信。根据c++的特点,我们可以采用纯虚函数的方式来实现。这样做的好处是能够实现封装和多态。现举一实例,供大家参考。(不想做过多说明,大家一看就应该能够明白)

Class IPerson

{

public:

IPerson() {};

virtual ~IPerson()=0 {}; //注意,最好定义此虚析构函数,够避免子类不能正常调用析构函数;如果定义为纯虚析构函数,则必须带定义体,因为子类隐含调用该析构函数。

//提供给外面使用的接口一般采用纯虚函数

virtual  void SetName(const string &strName)= 0;

virtual  const string GetName()= 0;

virtual  void Work()= 0;

}

二、接口实现

实现接口是通过继承接口的子类来实现的,不同的子类可以实现不同效果,即使所谓多态。

Class CTeacher:public IPerson

{

public:

CTeacher(){};

virtual ~CTeacher();

string m_strName;

void SetName(const string &strName);

const string GetName();

void Work();

}

void CTeacher::SetName(const string &strName)

{

m_strName = name;

}

const string CTeacher::GetName()

{

return m_strName;

}

void CTeacher::Work()

{

cout <<"I am teaching!"<<endl;//老师的工作是教书,其他职业的人做的工作是不一样的。

}

三、接口导出

bool GetIPersonObject(void** _RtObject)
{

IPerson* pMan = NULL;

pMan = new CTeacher();

*_RtObject = (void*)pMan ;

return true;

}

__declspec(dllexport) bool GetIPersonObject(void** _RtObject);

四、接口使用

#include "IPerson.h"

#pragma  comment(lib,"IPerson.lib")

bool  __declspec(dllimport)  GetIPersonObject(void** _RtObject);

/* 测试例子 */

void main()

{

IPerson *    _IPersonObj = NULL;

void*      pObj=NULL;

if (GetIPersonObject(&pObj))

{

// 获取对象

_IPersonObj = (IPerson *)pObj;

// 调用接口,执行操作

_IPersonObj ->SetName("Tom");

string strName = _IPersonObj->GetName;

_IPersonObj->work();

}

if (_IPersonObj !=NULL)

{

Delete _IPersonObj ;

_IPersonObj  = NULL;

}

}

到此为止,基本完整演示了接口的定义及实现,有不足之处,请指教。^-^...

转载于:https://my.oschina.net/hanshubo/blog/746687

C++接口定义及实现举例相关推荐

  1. Thrift的接口定义语言IDL

    Thrift的IDL可以使用下面的语法来定义描述接口. 1 基本类型 bool:布尔值,true 或 false byte:8 位有符号整数 i16:16 位有符号整数 i32:32 位有符号整数 i ...

  2. 【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )

    文章目录 前言 一.业务子函数接口定义要点 二.完整代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模型 : 两个指 ...

  3. JDK中提供的实现——通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例

    JDK中提供的实现 在 Java 中,通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例. 1 ...

  4. 我的编码习惯 —— API 接口定义

    工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口.接口定义一定程度上能反应程序员的编程功底.列举一下工作中我发现大家容易出现的问题: 1. 返回格式不统一 同一个接口,有时候 ...

  5. typescript接口定义

    接口描述: 接口的使用,这里讲的是接口的使用 (其实就是定义一些规定) 接口定义 interface Accountable{getIncome():number; } 接口实现 如果实现了一个指定的 ...

  6. USB接口定义(Z)

    本文为转载,其中也有些小错误,参考即可! USB接口通常只有4根线,两根电源线和两根数据信号线,故信号是串行传输的.USB接口也称为串行口,usb2.0的速度可以达到480Mbps.可以满足各种工业和 ...

  7. usb接口定义引脚说明_PerfDogService使用说明

    令牌申请教程:https://bbs.perfdog.qq.com/article-detail.html?id=55安装包下载:https://perfdog.qq.com/sdk一. 概述 Per ...

  8. hd-sdi转hdmi转换器产品规格参数及接口定义详解

    hd-sdi转hdmi转换器可方便的将HD-SDI 信号转为HDMI 信号,同时会将SDI所带音频信号分离转换后嵌入到HDMI 信号中,以实现声音及图像同步传输.专为电视台.平安城市.公安交警.高速公 ...

  9. java 用面向接口编程的方式开发打印机_Java“打印机”模型理解面向接口编程。实现接口定义类,接口实现类,核心“业务”类分离...

    接口定义类 IinkBox.java package printerDemo.iface; public interface IInkBox { public String getColor(); } ...

最新文章

  1. input type=file change事件只触发一次
  2. 【收藏】Keepalived+Nginx高可用配置(偏nginx配置)
  3. c++primer12.3文本查询程序的一些问题的感悟和错误剖析
  4. 搜索时展示的是名字,传给后端的是id
  5. 【分享】具有“魔性”的通用软件开发框架
  6. 推荐系统实例-基于矩阵分解
  7. D - 迷宫游戏 (最短路径)
  8. 互联网晚报 | 12月10日 星期五 | B站月均活跃UP主达270万人;宝马电动车总销量破百万;苹果市值逼近3万亿美元...
  9. Codeforces 1062C Banh-mi题解
  10. 批量生成奖状的简单程序
  11. PHP自动识别电话名字地址,你用PHP,如何实现地址自动识别的功能
  12. Mac MySql官方下载速度太慢解决方案
  13. html站点是啥意思,html啥意思
  14. 崩坏3区号+86_86的区号是代表中国!那82是代表哪个国家?
  15. 基于改进YOLO算法的夜间车辆检测
  16. Vue 项目前端响应式布局及框架搭建
  17. 某二级支行网络的设计与实现
  18. 在无网络的环境下使用模拟器
  19. 几款流行开源ESB总线简介
  20. java初级能干什么_小黄鸭系列java基础知识 | java能干什么?

热门文章

  1. 关于JS数组API的总结
  2. 树型权限管理插件:jQuery Tree Multiselect详细使用指南
  3. TypeScript 2.1中的类型运算 一个递归的Readonly泛型
  4. 在不重装系统的情况下撤底删除oracle数据库及oralce的相关软件
  5. 项目经理问:为什么总是只有我在加班 – 挂包袱现象
  6. JavaScript解决命名冲突的一种方法
  7. 常见TS权限问题“通过终端服务访问”
  8. 每天5分钟玩转python3算法:选择排序
  9. python的上下文管理
  10. 网站访问过程理解(一点记录)