C++ Primer 6.4 函数重载 知识点+练习题

总思维导图

C++ Primer 6.4 函数重载

  • 定义重载函数
  • 重载和const形参
  • const_cast和重载
  • 重载与作用域
  • 练习题

定义重载函数

void lookup(int a);
void lookup(double b);
void lookup(int a,double b);
此三个函数构成函数重载,具体调用时根据传入实参进行匹配
void lookup(int a);
bool lookup(int a);
只有返回值不同,编译器会认为是重复声明,报错
不构成重载

重载和const形参

void lookup(int a);
void lookup(const int a);
若传入的形参是const int b=0;
则传哪个都是允许的,属于重复声明
void lookup(int a);
void lookup( int * const a);//先是常量,后是指针
同理
void lookup(int &a);
void lookup(const int&a);
若将const int b传入,则第一个不允许,它有可能通过a这个引用改变b的值
void lookup(int *a);
void lookup(const int*a );//注意这里const的位置,和上一个不同,先是指针后是常量,不允许用指针修改所指向的常量
同上构成重载

当我们传递非常量实参时,编译器优先考虑非const的函数

const_cast和重载

之前曾定义过如下函数
const string& shorterString(const string &s1,const string &s2)
{return s1.size()<=s2.size() ? s1:s2;
}
现在想对两个非常量实参调用这个函数,返回结果为string&,可以用const_cast 强转
string& shorterString(string &s1,string &s2)
{auto &r=shorterString(const_cast<const_string&>(s1),const_cast<const_string&>(s2));//把s1s2强转为const string&return const_cast<string &>(r);//去const
}

重载与作用域

void func(int a);
void func(string a);
int main()
{void func(double a);func("aaa");//出错!只认为有void func(double a);,void func(string a);被隐藏
}

在c++语言中,名字查找发生在类型检查之前

练习题

无需要强调的

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

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

相关文章

【iOS】UIColor、CGColor、CIColor的区别和联系

编者在实验室小组的指导下&#xff0c;仿写了许多App&#xff0c;其中UI的颜色模仿也是令人头痛的点。设计颜色一般使用UIColor类方法直接获取颜色&#xff1a; 有时会使用 (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alph…

C++中什么时候应该使用结构体,什么时候应该使用类

第一点&#xff1a; 在C中&#xff0c;结构体和类都可以用来定义自定义数据类型&#xff0c; 它们之间的主要区别在于默认的访问控制和成员变量的默认初始化方式。 结构体&#xff1a; - 结构体的成员变量默认为public访问权限。 - 结构体的成员变量默认为公共可见的&#x…

代码随想录算法训练营day8|344.反转字符串、541.反转字符串II、54.替换数字、151.翻转字符串里的单词、55.右旋转字符串

344.反转字符串 541. 反转字符串II 卡码网&#xff1a;54.替换数字 151.翻转字符串里的单词 卡码网&#xff1a;55.右旋转字符串 344.反转字符串 建议&#xff1a; 本题是字符串基础题目&#xff0c;就是考察 reverse 函数的实现&#xff0c;同时也明确一下 平时刷题什么时候用…

权限修饰符-面向对象——java学习笔记

什么是权限修饰符&#xff1f; 用来限制类中的成员&#xff08;成员变量、成员方法、构造器、代码块...&#xff09;能够被访问的范围 各权限修饰符的限制范围&#xff1a; 修饰符在本类中同一个包下的其他类里任意包下的子类里任意包下的任意类里private√缺省√√protec…

2023.1.13 关于在 Spring 中操作 Redis 服务器

目录 引言 前置工作 前置知识 实例演示 String 类型 List 类型 Set 类型 Hash 类型 ZSet 类型 引言 进行下述操作的前提是 你的云服务器已经配置好了 ssh 端口转发即已经将云服务器的 Redis 端口映射到本地主机 注意&#xff1a; 此处我们配置的端口号为 8888 可点击下…

jmeter如何做接口测试?

Jmeter介绍&测试准备&#xff1a; Jmeter介绍&#xff1a;Jmeter是软件行业里面比较常用的接口、性能测试工具&#xff0c;下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库。 前期准备&#xff1a;测试前&#xff0c;需要安装好Jmeter以及jdk并配置好jdk环…

小知识分享2

文章目录 1.TCP/IP协议2.四次挥手断开连接3.TCP的三次握手和四次挥手4.在什么情况下需要设置WINS Proxy&#xff1f;5.用户与用户账户有什么不同&#xff1f;为什么需要使用用户账户&#xff1f; 1.TCP/IP协议 1、TCP/IP、Transmission Control Protocol/internet Protocol,传…

杨中科 EFCORE 第三部分 主键

主键 自增主键 1、EF Core支持多种主键生成策略:自动增长;Guid;Hi/Lo算法等。 2、自动增长。 优点:简单; 缺点: 数据库迁移以及分布式系统中&#xff08;多数据库合并&#xff0c;会有重复主键值&#xff09;比较麻烦;并发性能差&#xff08;大并发情况下&#xff0c;为了保证…

函数栈桢的创建和销毁

函数栈桢的创建和销毁 一、解决的问题二、认识常用的寄存器及其指令操作三、函数栈桢解析三、回答问题 一、解决的问题 1.局部变量是怎么创建的&#xff1f;  2.为什么局部变量的值是随机值&#xff1f;  3.函数是怎么传参的&#xff1f;传参的顺序是怎样的&#xff1f;  4.…

python24.1.14while循环

当条件结束时间未知时&#xff0c;while循环比for循环更合适 实践

Vue 3面试题

Vue 3面试题 以下是一些常见的Vue 3面试题&#xff1a; Vue 3中的Composition API是什么&#xff1f;它与Options API有什么区别&#xff1f; 答案&#xff1a; Composition API是Vue 3中引入的一种新的组件设计模式&#xff0c;它允许开发者通过函数的形式组织和重用组件的逻…

带你拿捏SpringBoot自动装配的核心技术?模块装配(@EnableXXX注解+@Import)+ 条件装配(@ConditionalXXX)

文章目录 Profile激活指定配置文件主配置文件中指定激活的profile命令行激活设置虚拟机参数激活 profile控制不到的地方 Spring原生的条件装配注解ConditionalConditional接口讲解案例讲解 Spring Boot封装的条件装配注解ConditionalXXX自己实现ConditionalOnBeanSpringBoot 源…

自制数据库空洞率清理工具-C版-03-EasyClean-V1.2(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、升级点 四、支持功能 五、空洞率 六、工具流程图 1、流程描述 2、注意点 &#xff08;1&#xff09;方法一 &#xff08;2&#xff09;方法二 七、清理空洞率流程图 八、安装包下载地址 九、参数介绍 1、命令模板 2、命令样例 3…

【集合大练习】---------------简易学生管理系统

目标&#xff1a; 实现学生对象新增&#xff0c;删除&#xff0c;查看&#xff0c;对象信息修改 整体实现思路&#xff1a; 1.定义学生类-------------创建学生对象 2.管理界面代码编写-------------命令提示面板 3.添加学生的代码编写---------add功能实现 4.查看学生信…

4、C语言:指针与数组

数组与指针 指针与地址指针与函数参数指针与数组地址算数运算字符指针与函数指针数组以及指向指针的指针多维数组命令行参数指向函数的指针复杂声明 指针是一种保存变量地址的变量。C语言中&#xff0c;指针的使用非常广泛&#xff0c;原因之一是&#xff0c;指针常常是表达某个…

智能合约笔记

前言&#xff1a; 首先了解下为什么会出现智能合约&#xff0c;打个比方现在有两个人A和B打赌明天会不会下雨&#xff0c;每个人赌注100元&#xff0c;如果第二天下雨则A拿走200元&#xff0c;否则B拿走200元&#xff0c;这样就有一个问题&#xff0c;赌注要到第二天才能见效&…

Python 中的字符串分割函数 split() 详解

更多Python学习内容&#xff1a;ipengtao.com 在 Python 编程中&#xff0c;处理字符串是一项常见的任务。字符串分割是其中的一个常见操作&#xff0c;而 Python 提供了强大的 split() 函数&#xff0c;用于将字符串拆分成多个部分。本文将详细介绍 split() 函数的用法、参数和…

Linux 转换文字编码与换行符 nkf命令

参考资料 【 nkf 】コマンド――文字コードと改行コードを変換するnkfコマンドでファイルの文字コードと改行コードを統一する 目录 一. 前期准备二. 乱码现象与分析三. nkf命令3.1 nkf --guess 查看文件编码3.2 nkf -w8 UTF-8(BOM)编码显示3.3 nkf -wd --overwrite 覆盖源文件…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言&#xff08;Structure Query Language&#xff09;&#xff0c;它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别&#xff1a; DDL&#xff08;Data Definition Languages&#xff09;语句 数据定义语言&#xff0c;这…

springAMQP接收消息报错

报错问题 01-10 23:04:33:471 WARN 14400 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer : Failed to declare queue: simple,queue 01-10 23:04:33:474 WARN 14400 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer : Queue declaratio…