【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )

news2024/12/26 15:18:42

文章目录

  • 一、函数指针定义方法
    • 1、直接定义函数指针
    • 2、通过 函数类型 定义 函数指针
    • 3、通过 函数指针类型 定义 函数指针
    • 4、代码示例 - 不同方式定义函数指针


博客总结 :

  • 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;
  • 判定标准 : 只有 函数参数 的 个数 / 类型 / 顺序 的不同 是 " 函数重载 " 的判断标准 , 函数 的 返回值 不是 " 函数重载 " 的 判断标准 ;
  • 二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ;
  • 函数指针赋值重载函数 : 根据 函数指针 类型中的 参数列表类型 , 自动匹配 重载函数 ;




一、函数指针定义方法



先定义一个函数 , 在本章节中使用不同的方法 , 定义该函数 对应 的 函数指针 ;

// 定义一个函数
int add(int a, int b) {
	return a + b;
}

1、直接定义函数指针


按照下面的 函数指针 语法 , 定义函数指针 ;


" 函数指针 " 定义语法 :

return_type (*func_ptr)(parameter_list);
  • return_type : 函数指针 指向的函数 的 返回值类型 ;
  • func_ptr : 函数指针 名称 , 使用该 名称 也可以调用函数 , 用法与函数名相同 ;
  • parameter_list : 函数指针 指向函数 的 参数列表 ;

直接使用 函数指针 定义语法 , 定义 函数指针 ;

	// 直接定义 函数指针
	int (*func3)(int a, int b) = add;

2、通过 函数类型 定义 函数指针


首先 , 使用 typedef 关键字 , 定义 函数类型 , 下面的代码 定义了 函数类型 func , 函数的 参数列表是 2 个 int 参数 , 返回值是 int ;

// 定义函数类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (func)(int a, int b);

然后 , 通过定义的 func 函数类型 , 定义函数指针 , 直接根据指针的定义语法 指针类型* 指针名称 定义函数指针 , 同时将 add 函数 的 地址 赋值给 函数指针 ;

	// 根据 函数类型 定义 函数指针
	func* func1 = add;

3、通过 函数指针类型 定义 函数指针


首先 , 通过 typedef 关键字, 定义 函数指针 类型 , 类型名称为 func_ptr , 对应的函数的 参数列表是 2 个 int 参数 , 返回值是 int ;

// 定义函数指针类型 func_ptr , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (*func_ptr)(int a, int b);

然后 , 通过 func_ptr 函数指针类型 , 定义 函数指针 , 直接使用 变量类型 变量名称 的方式定义 函数指针 ;

	// 根据 函数指针类型 定义 函数指针
	func_ptr func2 = add;

4、代码示例 - 不同方式定义函数指针


在下面的代码中 , 分别使用上述章节中讲解的三种方式 , 定义了函数指针 ;


代码示例 :

// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;

// 定义函数类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (func)(int a, int b);

// 定义函数指针类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (*func_ptr)(int a, int b);

// 定义一个函数
int add(int a, int b) {
	return a + b;
}

int main()
{
	// 根据 函数类型 定义 函数指针
	func* func1 = add;

	// 根据 函数指针类型 定义 函数指针
	func_ptr func2 = add;

	// 直接定义 函数指针
	int (*func3)(int a, int b) = add;

	// 打印 调用结果 
	cout << "func1(1, 2) = " << func1(1, 2)
		<< " , func2(1, 2) = " << func2(1, 2)
		<< " , func3(1, 2) = " << func3(1, 2) << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
    return 0;
}

执行结果 : 三种方式定义的函数指针都成功

func1(1, 2) = 3 , func2(1, 2) = 3 , func3(1, 2) = 3
Press any key to continue . . .

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

给抖音达人推商品需要注意什么?抖店商家注意了,教你几个技巧

我是王路飞。 找达人带货这种玩法&#xff0c;虽然商家要给带货达人佣金&#xff0c;相当于你的利润变少了。 但是你要明白一件事&#xff0c;我们做抖店也不是做着玩的&#xff0c;而是奔着长线去玩的&#xff0c;所以长久稳定才是我们需要的。 而相比较自然流量&#xff0…

SecureCRT安装、汉化、上传、美化

文章目录 SecureCRT安装、汉化、美化一、SecureCRT介绍二、SecureCRT下载三、SecureCRT汉化四、SecureCRT连接五、SecureCRT上传第一种方法&#xff1a;用SFTP 传输文件第二种方法&#xff1a;WinSCP传输文件 六、SecureCRT美化 SecureCRT安装、汉化、美化 一、SecureCRT介绍 …

Source Insight 宏-添加单行的c注释

今天写代码的时候突然想到在代码的上一空行添加一对 /* */ 来添加注释&#xff0c;或者单独注释一行代码&#xff0c;而且是用 c 的注释方式&#xff0c;即使用 /**/&#xff0c;如想要在光标处添加 /**/ 或者注释掉光标所在的行&#xff0c;如&#xff1a; 实际的效果就是这样…

小程序开发一个多少钱啊

小程序开发费用 小程序作为一种流行的移动应用形式&#xff0c;具有广阔的市场前景和商业机会。然而&#xff0c;在考虑开发小程序时&#xff0c;了解相关费用是至关重要的。以下是关于小程序开发费用及其相关成本的详细解析&#xff1a; 1. 小程序认证费用&#xff1a; 开发…

【vue】使用无障碍工具条(详细)

引入&#xff1a;使用的是太阳湾的无障碍工具条&#xff0c;代码地址&#xff1a;https://gitee.com/tywAmblyopia/ToolsUI 具体步骤&#xff1a;下载代码后&#xff0c;将其中的 canyou 文件夹拖入 vue 项目中的 public 文件夹中&#xff1b; 上图是在项目目录中的样子&#…

Nginx - 根据请求参数路由进行不同的响应

文章目录 需求思路 需求 业务有一个统一入口 /api/biz?type1 /api/biz/type2需要对不同的接口实现流控 最常见的是通过location进行路径匹配的时候&#xff0c;但是无法使用正则表达一起捕获这个路径和querstring的参数。如果我们想通过URL里面的Query String进行不同的rew…

mybatisplus多租户配置

概述 当前mybatisPlus版本 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version> </dependency>jdk版本&#xff1a;17 springboot版本&#xff1a;…

macOS外接显示器切换窗口卡顿的问题

背景 最近发现在使用外接显示器的情况下&#xff0c;切换窗口鼠标经常会卡一下卡一下的。 过程 由于我个人有安装自动切换输入法的工具&#xff08;Input Source Pro&#xff09;&#xff0c;我以为是在不同窗口中切换了输入法导致的卡顿&#xff0c;我就关闭了这个软件&…

YOLO目标检测——VOC2007数据集+已标注VOC格式标签下载分享

VOC2007数据集是一个经典的目标检测数据集&#xff0c;该数据集包含了20个常见的目标类别&#xff0c;涵盖了人、动物、交通工具等多个领域&#xff0c;共同11220图片。使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;标签格式为VOC格式&#xff08;即xml标签&a…

随心记录0816

1. foce相关方法 下面这张图☞的都是uvm_hdl_force和uvm_hdi_deposit 2.post randomize函数的使用方法 【验证小白】随机中使用post_randomize的正确姿势_尼德兰的喵的博客-CSDN博客 3. 4. process用法 systemverilog的process类 | 骏的世界 (lujun.org.cn) 5.uvm_re_mat…

被百度判定为低质量网站了!如何整改?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 先说结论&#xff1a;接受现实&#xff0c;不要幻想百度恢复了! 百度自9月初大批量删除百度资源平台权限以来&#xff0c;几乎90%(未经证实**&#xff0c;但数量确实不小)的网站都被取消了权限&am…

【正点原子STM32连载】 第二十九章 DMA实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第二…

【PowerQuery】PowerQuery学习路径

PowerQuery这么好,怎么去学习呢?相信很多初读本书的朋友迫切的希望了解整个PowerQuery全景知识和它提供的相应的功能。但是对于PowerQuery来说,一开始就会进行自定义函数的构建当然也是不可能的,这里有相应的学习路径来进行由浅入深的学习,帮助读者更好的理解PowerQuery的…

12V/24V/48V 直流DC电源浪涌保护方案图 超齐全

直流DC电源端口浪涌过压防护一直都是很多新老电子工程师关注的方案之一。不管是电源端口浪涌防护还是信号接口静电保护&#xff0c;浪涌静电防护&#xff0c;找东沃&#xff0c;电路保护不迷路&#xff01;东沃电子专注于研发、生产、销售静电保护二极管&#xff08;ESD&#x…

natapp 内网穿透 获取网页信息相关内容简介

1 首选介绍natapp 内网穿透进入官网 https://natapp.cn/ 购买或者使用免费隧道 协议使用web ,填写本地地址和web端可访问的端口 进入exe文件的目录 运行 natapp -authtokenxxxxxx 剩下获取微信用户信息 第一步获取code 这里需要设置授权域名 这里可以设置上 natapp给分配的地…

WebSocket原理简介

慢聊Go之GoLang中使用Gorilla Websocket&#xff5c;Go主题月 - 掘金 (juejin.cn) 【Go项目】24. WebSocket 基本原理_哔哩哔哩_bilibili 1.http和socket的区别 1&#xff09; http要先给服务器发请求&#xff0c;然后才会得到响应&#xff0c;基本是一问一答式。 而socke…

纯css实现奥运五环、3D平移、旋转、扭曲

文章目录 前言效果图htmlcss 前言 1、不是真正的五环&#xff0c;因为通过形变得来。 2、不同电脑显示器的像素不同&#xff0c;显现的效果不同。 3、不推荐使用此方法。 4、主要通过旋转加平移的方式实现。 效果图 html <div class"olympic_rings"><span …

医美小程序怎么做

医疗美容小程序商城功能明细&#xff1a; 1. 商品展示&#xff1a; - 商品分类&#xff1a;根据不同的医疗美容产品进行分类展示&#xff0c;方便用户查找和浏览。 - 商品详情&#xff1a;展示商品的详细信息&#xff0c;包括价格、规格、功效、成分等&#xff0c;以及用户评价…

Java反射:探索对象创建与类信息获取

文章目录 1. 对象的创建2. 类的初始化2.1 类的加载2.2 类的连接2.3 类的初始化 3. 反射是什么&#xff1f;4. 获取Class类对象4.1 使用类名.class4.2 使用对象的getClass()方法4.3 使用Class.forName() 5. 获取构造器对象5.1 使用getConstructors()和getDeclaredConstructors()…

C标准输入与标准输出——stdin,stdout

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x1f4ad; 写在前面&#xff1a;这是一套 C 语言趣味教学专栏&#xff0c;目前正在火热连载中&#xff0c;欢迎猛戳订阅&#…