博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++对C语言的拓展(5)—— 函数重载和函数指针结合
阅读量:5260 次
发布时间:2019-06-14

本文共 1220 字,大约阅读时间需要 4 分钟。

1、函数指针的介绍

函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下:

int add(int nLeft,int nRight);//函数定义

该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可

int (*pf)(int,int);//未初始化

pf可指向int(int,int)类型的函数。pf前面有*,说明pf是指针,右侧是形参列表,表示pf指向的是函数,左侧为int,说明pf指向的函数返回值为int。则pf可指向int(int,int)类型的函数。而add类型为int(int,int),则pf可指向add函数。

pf = add;//通过赋值使得函数指针指向某具体函数

注意:*pf两端的括号必不可少。

2、函数指针基本语法

//方法一:typedef void (myTypeFunc)(int a, int b);//声明一个函数类型myTypeFunc *myfuncp = NULL;//定义一个函数指针,这个指针指向函数的入口地址//方法二:typedef void (*myPTypeFunc)(int a, int b);//声明一个函数指针类型myPTypeFunc fp = NULL;//通过函数指针类型定义了一个函数指针//方法三:void (*myVarPFunc)(int a,int b);//定义一个函数指针变量

当时用重载函数名对函数指针进行赋值时,根据重载规则挑选与函数指针参数列表一致的候选者,严格匹配候选者的函数类型指针的函数类型。

#include 
using namespace std;int func(int x){ return x;}int func(int a, int b){ return a+b;}int func(const char* s){ return strlen(s);}typedef int(*pf1)(int a);//int(*)(int a)typedef int(*pf2)(int a,int b);//int(*)(int a,int b)int main(void){ int c = 0; pf1 p1 = func; c = p1(1); printf("c=%d\n", c); pf2 p2 = func; c = p2(1,2); printf("c=%d\n", c); retu

 3、函数重载总结

  • 重载函数在本质上是相互独立的不同函数。
  • 函数的函数类型是不同的;
  • 函数返回值不能作为函数重载的依据;
  • 函数重载是由函数名参数列表决定的。

 

转载于:https://www.cnblogs.com/yuehouse/p/9787126.html

你可能感兴趣的文章
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
USB打印机开钱箱
查看>>
code First 四
查看>>
Django与Ajax
查看>>
再做一题,2013-6-16更新
查看>>
Oracle_Statspack性能诊断工具
查看>>
面向对象(封装、继承、多态、抽象)
查看>>
Memcached数据库缓存
查看>>
转获取sql维护的表关系
查看>>
网络基础——TCP/IP五层模型
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 文件操作
查看>>
Java 数组实例
查看>>
Java 方法实例
查看>>
Java 异常处理
查看>>
Java 目录
查看>>
Java 数据结构
查看>>