文档章节

关于接口C++小结

十二月的萧
 十二月的萧
发布于 2017/04/17 17:29
字数 382
阅读 4
收藏 0

 在C++中关于函数的接口多半用函数指针来实现。所以我们的学习也将从函数指针开始

关于函数指针的应用用一串代码即可说明

代码:

#include<iostream.h>
#include<iomanip.h>
int (*p)(int ,int );
int sum(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{
    return x-y;
}
int main()
{
    p=sum;
    cout<<setw(4)<<(*p)(5,4)<<endl;
    p=sub;
    cout<<setw(4)<<(*p)(5,4)<<endl;

    return 0;
}

在这里int (*p)(int,int)便相当于接口

如果我们要用一个函数来实现接口当然也是可以的代码如下:

   

#include<iostream.h>
#include<iomanip.h>
int (*p)(int ,int );
int sum(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{
    return x-y;
}
void operation(int x,int y,int (*p)(int ,int ))
{
        cout<<setw(4)<<(*p)(x,y)<<endl;

}
int main()
{
/*    p=sum;
    cout<<setw(4)<<(*p)(5,4)<<endl;
    p=sub;
    cout<<setw(4)<<(*p)(5,4)<<endl;*/
    operation(5,4,sum);
    operation(5,4,sub);

    return 0;
}

当你感觉operation函数的形参过于麻烦,你也可以用 tpydef来进行处理

不过需要牢记一点:typdef int (*p)(int ,int)中的p就相当于 int (*)(int ,int)

当利用其作为形参时,代码如下:

#include<iostream.h>
#include<iomanip.h>
typedef int (*p)(int ,int );
int sum(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{
    return x-y;
}

 /*void operation(int x,int y,int (*p)(int ,int ))
{
        cout<<setw(4)<<(*p)(x,y)<<endl;

}*/
 void operation(int x,int y,p q)
{
        cout<<setw(4)<<(*q)(x,y)<<endl;

}
int main()
{
/*    p=sum;
    cout<<setw(4)<<(*p)(5,4)<<endl;
    p=sub;
    cout<<setw(4)<<(*p)(5,4)<<endl;*/
    operation(5,4,sum);
    operation(5,4,sub);

    return 0;
}

好了代码就写到这里,如果你喜欢的话,别忘了点赞偶

© 著作权归作者所有

十二月的萧
粉丝 2
博文 7
码字总数 1972
作品 0
十堰
程序员
私信 提问
FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

摘要: 在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特...

知然
2013/01/27
0
0
string、string.h和ctring学习小结

string 和 string.h (和cstring等价)头文件的区别 为什么下面这段代码 #include void main() { string aaa= "abcsd d"; printf("looking for abc from abcdecd %s/n", (strcmp(aaa,"abc")) ......

长平狐
2013/01/06
640
0
Shiboken学习小结

从PySide一换成shiboken就开始关注它,可是由于对python的C调用不熟,对cmake构建系统不熟,从尝试了解shiboken到现在已经10个月过去了,还是一直没什么进展。但必须学习并整理一下了: 什么...

晨曦之光
2012/05/08
78
0
1+1=2的 blog 文章索引

百度空间中 原blog部分文章 索引:http://hi.baidu.com/cyclone/home Qt Bugs 通过 Qt Bugs 学习 Qt 似乎是一个不错的方法。 QString之arg使用一则 QTBUG-19027 QMainWindow上下文菜单内存泄...

晨曦之光
2012/05/08
309
0
关于跨平台接口代码大家的做法是怎样的

最近有个需求是做一个debug的工具,发命令给硬盘。 但是要求linux和windows上都能用。 界面部分可以交给QT这个没有问题,但是设计到底层接口时就会涉及到linux和windows的区别来,我现在想到...

cnyfk
2014/12/16
686
2

没有更多内容

加载失败,请刷新页面

加载更多

阿里P7架构师:这些技术点没搞懂,我劝你不要跳槽!

阿里P7架构师架构师:这些技术点没搞懂,我劝你不要跳槽! 哪些技术点呢? 废话不多说,技术点全在下面这6张图里面了! 1.怎么看源码? 2.分布式 3.微服务 4.性能优化 5.工程化 粉丝福利:一...

别打我会飞
5分钟前
0
0
易错题

architect刘源源
10分钟前
0
0
使用Json4s 将带有Timestamp的对象转json时 变为所在时区

在有Timestamp属性的对象转json时 最后出来的时间会减小8小时,是因为变成了0时区,需要将隐式转换中添加设置本地时区 import org.json4s.{DefaultFormats, Formats}import org.json4s.jac...

可达鸭Go
12分钟前
0
0
工作六年java程序员的工作感悟,带你走出迷茫

前言 很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面...

java知识分子
17分钟前
0
0
jenkins邮箱发送失败以及解决方案

jenkins邮箱设置报错以及解决方案 Jenkins邮箱设置 我用了 Email Extended Plugin这个插件,这个插件会有更加丰富的邮件内容,建议添加。 1.安装 Email Extended Plugin 2.系统管理-系统设置...

shzwork
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部