C++入门(2)

news2025/1/19 14:25:24

C++入门

  • 1.缺省参数
    • 1.1. 缺省参数举例和概念
    • 1.2. 函数的传参是从左到右给参数的
    • 1.3.缺省参数分类
    • 1.4. 缺省参数的函数声明与定义
  • 2.函数重载
    • 2.1.函数重载的概念
    • 2.2. 函数重载的情况
    • 2.3.剖析C语言不能函数重载而C++却可以的原因
      • 2.3.1. 编译链接过程
      • 2.3.2. 函数名修饰规则
  • 3.引用
    • 3.1. 引用概念
    • 3.2.引用特性
    • 3.3. 引用做函数参数

1.缺省参数

1.1. 缺省参数举例和概念

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
**概念:**缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

1.2. 函数的传参是从左到右给参数的

在这里插入图片描述
注意:C++函数传参只能是从左到右的,中间不能条过参数,也不能指定给参数传参。
在这里插入图片描述
在这里插入图片描述

1.3.缺省参数分类

  • 全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{
  cout<<"a = "<<a<<endl;
  cout<<"b = "<<b<<endl;
  cout<<"c = "<<c<<endl;
}
  • 半缺省参数
void Func(int a, int b = 10, int c = 20)
{
  cout<<"a = "<<a<<endl;
  cout<<"b = "<<b<<endl;
  cout<<"c = "<<c<<endl;
}

**注意:**半缺省参数要从右往左的连续缺省,中间不能隔着!
在这里插入图片描述
在这里插入图片描述

1.4. 缺省参数的函数声明与定义

缺省参数不能在函数的声明与定义中同时出现。因为:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可见,在函数声明的时候使用省缺参数,在函数定义的时候不能使用省缺参数。因为,编译的时候是先找到函数声明的地方的,如果声明没有用省缺参数,当传值少的时候,编译器就会认为这个函数没有省缺参数,参数传值认为过少,编译不通过。所以最好在函数声明的时候使用省缺参数,在函数定义的时候不用。

2.函数重载

**重载解释:**一个词有多个含义或解释;自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。
比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!”

2.1.函数重载的概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数类型类型顺序)不同,常用来处理实现功能类似数据类型不同的问题

2.2. 函数重载的情况

①参数类型不同
在这里插入图片描述
②参数个数不同
在这里插入图片描述
**注意:**存在省缺参数的时候,是构成重载函数的,当是编译器有时候会无法识别多个匹配的函数,从而报错。
在这里插入图片描述
在这里插入图片描述
③参数类型的顺序不同
在这里插入图片描述
注意
①仅参数名字顺序不同,不构成函数重载!
在这里插入图片描述
②仅是函数的返回值不相同,不构成函数重载!
在这里插入图片描述

2.3.剖析C语言不能函数重载而C++却可以的原因

2.3.1. 编译链接过程

在这里插入图片描述
编译的时候找到函数的声明或者直接找到函数的定义;函数的定义查找在链接的过程。
C语言和C++的函数调用的时候是不管函数返回值类型的。

2.3.2. 函数名修饰规则

C语言
在这里插入图片描述
链接的时候只是看函数的名。
C++
在这里插入图片描述
C++函数链接的时候看根据函数名修饰规则查找函数的。
综上所述:C++存在函数重载,而C语言不存在。不能根据函数的返回类型不同来判断是否是函数重载,因为函数调用的时候不看函数的返回值类型,在编译的时候,编译器无法识别要调用哪个函数,所以该定义无法通过编译,更不会到链接的步骤。

3.引用

3.1. 引用概念

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
在这里插入图片描述
使用:类型& 引用变量名(对象名) = 引用实体

void TestRef()
{
  int a = 10;
  int& ra = a;//<====定义引用类型
  printf("%p\n", &a);
  printf("%p\n", &ra);
}

注意:引用类型必须和引用实体是同种类型的
在这里插入图片描述

3.2.引用特性

  1. 引用在定义的时候必须初始化;
  2. 一个变量可以有多个引用;
  3. 引用一旦一个实体,不能在引用其他实体;即后面的相等是赋值。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3. 引用做函数参数

在这里插入图片描述

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

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

相关文章

Java并行流:一次解决多线程编程难题,让你的程序飞起来

前言 在日常的工作中&#xff0c;为了提高程序的处理速度&#xff0c;充分利用多核处理器的性能&#xff0c;我们需要手动编写多线程代码。但是多线程编程非常复杂&#xff0c;容易出现死锁、竞态条件等问题&#xff0c;给我们带来了很大的困扰。而 Java 并行流则提供了一种更加…

python机器学习和深度学习在气象中的应用

查看原文>>> Python人工智能在气象中的实践技术应用 Python 是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得 Python 在气象、海洋、地理、…

14:24面试,14:32就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子&#xff0c;自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有…

PythonFlash+MySQL实现简单管理系统的增删改查

今天简单分享一下用Python的flash框架结合MySQL来实现信息管理系统的增删改查&#xff01; ps&#xff1a;该博客只完成了信息的添加和查看&#xff0c;删除和修改按照该方法下推即可&#xff01; 实现功能之前我们先在数据库里设置数据&#xff0c;例如&#xff1a; 我们创…

日常记录:天梯赛练习集L1-046 整除光棍

题目&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#x…

Mac环境下nvm的安装与环境配置

目录 1.nvm简介 2.nvm安装 3.配置nvm环境 1.nvm简介 nvm全称 Node Version Manager &#xff0c;意思为node版本控制&#xff1b;它是一个命令行应用&#xff0c;可以快速地更新、安装、使用、卸载本机的全局 node.js 版本。他可以在同一台电脑上进行多个node版本之间的切换…

redis基础(6.0)数据结构、事务、常用组件等

1 概述 1.1 redis介绍 Redis 是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、 简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。…

华为手表开发:WATCH 3 Pro(16)传感器订阅气压

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;16&#xff09;传感器订阅气压初环境与设备气压传感器介绍与说明鸿蒙开发文件夹&#xff1a;文件新增展示的文本标记index.hmlindex.cssindex.js初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 环境与设备 …

【目标检测】YOLOv5:修改自己的网络结构

前言 YOLOv5就像一座金矿&#xff0c;里面有无数可以学习的东西。之前的博文一直将YOLOv5当作一个黑盒使用&#xff0c;只考虑模型的输入和输出&#xff0c;以此来对模型进行二次开发。 本篇博文将更近一层&#xff0c;深入到“金矿”内部&#xff0c;来尝试对模型结构进行替换…

高并发浅析

什么是高并发 高并发指通过设计保证系统能够同时并行处理很多请求&#xff0c;是分布式系统非常重要的概念 评价分布式系统性能的指标有&#xff1a; 响应时间&#xff1a;系统对请求做出响应的时间。吞吐量&#xff1a;单位时间内处理的请求数量。QPS&#xff08;和吞吐量基…

C++标准库 -- 顺序容器 (Primer C++ 第五版 · 阅读笔记)

C标准库 -- 顺序容器(Primer C 第五版 阅读笔记&#xff09;第9章 顺序容器------(持续更新)9.1、顺序容器概述9.2、容器库概览9.2.1 、迭代器9.2.2 、容器类型成员9.2.3 、begin 和 end 成员9.2.4 、容器定义和初始化9.2.5 、赋值和 swap9.2.6 、容器大小操作9.2.7 、关系运算…

电脑0x0000001A蓝屏错误怎么U盘重装系统教学

电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug&#xff0c;只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢&#xff1f;来看看以下的详细操作方法教学吧。 准备工作&…

ThinkPad-L480电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板ThinkPad-L480 处理器Intel Core i7-8550U已驱动 内存16GB DDR4 2400Mhz已驱动 硬盘Intel 760p 512GB已驱动 显卡Intel UHD 620已驱动 声卡瑞昱…

【探花交友】day06—即时通信

目录 1、即时通信 1.1、什么是即时通信&#xff1f;​编辑 1.2、功能说明 1.3、技术方案 2、环信 2.1、开发简介 2.2、环信Console 2.3、接口说明 3、抽取环信组件 3.1、编写HuanXinTemplate 3.2、编写Properties对象 3.3、配置 3.4、测试 4、用户体系集成 4.1、…

力扣刷题第一天:剑指 Offer 18. 删除链表的节点、LC206.反转链表

目录 零、前言 剑指 Offer 18. 删除链表的节点 一、题目描述 二、解题思路 三、完整代码 LC206.反转链表 一、题目描述 二、解题思路 三、完整代码 零、前言 这篇文章主要讲解两道链表相关的题目&#xff0c;分别是剑指 Offer 18和LC206。链表作为数据结构中重要的一…

Vue学习——【第五弹】

前言 上一篇文章 Vue学习——【第四弹】 中学到了数据代理&#xff0c;这篇文章接着学习 Vue中的事件处理。 事件处理 我们在学习JavaScript时就经常接触事件处理&#xff0c;比如在进行表单、按钮、列表折叠等操作时&#xff0c;我们就经常用到 click&#xff08;点击&…

Redis源码之Hash表实现

通常我们如果要设计一个 Hash 表&#xff0c;那么我们需要考虑这几个问题&#xff1a; 有没有并发操作Hash冲突如何解决以什么样的方式扩容对 Redis 来说&#xff0c;首先它是单线程的工作模式&#xff0c;所以不需要考虑并发问题。 想实现一个性能优异的 Hash 表&#xff0c…

ubuntu快速安装VMware Tools(全屏用的)

VMware Tools实现主机和虚拟机的文件共享。 第一步 打开VMware Workstation,启动ubuntu系统。 点击主界面的&#xff08;虚拟机&#xff09;——点击&#xff08;安装VMware Tools&#xff09;。 弹出提示框点击是——等待自动下载完成。 第二步 将安装包复制到桌面&#x…

ESP32 web WiFi 管理器esp32-wifi-manager

拓 2023/04/09-2022/04/11 1. 简介 github仓库 https://github.com/tonyp7/esp32-wifi-manager 说明 esp32-wifi-manager是esp32的纯C esp-idf组件&#xff0c;可通过门户网站轻松管理wifi网络。 esp32-wifi-manager是一个集所有功能于一身的wifi扫描仪、http服务器和dns守…

2022年第十三届蓝桥杯题解(全)C/C++

A题就是一个简单的进制转化&#xff0c;代码实现如下&#xff1a; #include <bits/stdc.h>using namespace std;const int N 1e5 10;int main() {int x 2022;int a 1;int res 0;while(x) {res (x % 10) * a;a a * 9;x / 10;}cout << res;return 0; } B题有…