C++心决之命名空间、重载函数和引用
目录
1. C++关键字(C++98)
2. 命名空间
2.1 命名空间定义
2.2 命名空间使用
3. C++输入&输出
4. 缺省参数
4.1 缺省参数概念
4.2 缺省参数分类
5. 函数重载
5.1 函数重载概念
5.2 C++支持函数重载的原理--名字修饰(name Mangling)
6. 引用
6.1 引用概念
6.2 引用特性
6.3 常引用
6.4 使用场景
6.5 传值、传引用效率比较
6.6 引用和指针的区别
1. C++关键字(C++98)
2. 命名空间
以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的
2.1 命名空间定义
2.2 命名空间使用
namespace bit
{// 命名空间中可以定义变量/函数/类型int a = 0;int b = 1;int Add(int left, int right){return left + right;
比特就业课
命名空间的使用有三种方式:
加命名空间名称及作用域限定符
使用using将命名空间中某个成员引入
使用using namespace 命名空间名称 引入
3. C++输入&输出
新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物,}struct Node{struct Node* next;int val;};
}
int main()
{// 编译报错:error C2065: “a”: 未声明的标识符printf("%d\n", a);
return 0;
} int main()
{printf("%d\n", N::a);return 0;
} using N::b;
int main()
{printf("%d\n", N::a);printf("%d\n", b);return 0;
} using namespce N;
int main()
{printf("%d\n", N::a);printf("%d\n", b);Add(10, 20);return 0;
} 3. C++输入&输出
#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout<<"Hello world!!!"<<endl;
return 0;
} - 1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件
- 以及按命名空间使用方法使用std。
- 2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含<
- iostream >头文件中。
- 3. <<是流插入运算符,>>是流提取运算符。
- 4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
- C++的输入输出可以自动识别变量类型。
- 5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,
- 这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有
- 一个章节更深入的学习IO流用法及原理。
#include <iostream>
using namespace std;
int main()
{int a;double b;char c;// 可以自动识别变量的类型cin>>a;cin>>b>>c;cout<<a<<endl;cout<<b<<" "<<c<<endl;return 0;
} 4. 缺省参数
4.1 缺省参数概念
void Func(int a = 0)
{cout<<a<<endl;
}
int main()
{Func(); // 没有传参时,使用参数的默认值Func(10); // 传参时,使用指定的实参
return 0;
} 4.2 缺省参数分类
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;} 5. 函数重载
5.1 函数重载概念
5.2 C++支持函数重载的原理--名字修饰(name Mangling)
6. 引用
6.1 引用概念
void TestRef()
{int a = 10;int& ra = a;//<====定义引用类型printf("%p\n", &a);printf("%p\n", &ra);
} 6.2 引用特性
6.3 常引用
void TestConstRef()
{const int a = 10;//int& ra = a; // 该语句编译时会出错,a为常量const int& ra = a;// int& b = 10; // 该语句编译时会出错,b为常量const int& b = 10;double d = 12.34;//int& rd = d; // 该语句编译时会出错,类型不同const int& rd = d;
} 6.4 使用场景
void Swap(int& left, int& right)
{int temp = left;left = right;right = temp;
} int& Count()
{static int n = 0;n++;// ...return n;
} 6.5 传值、传引用效率比较
6.6 引用和指针的区别
相关文章:
C++心决之命名空间、重载函数和引用
目录 1. C关键字(C98) 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性…...
higress使用了解
higress使用了解 了解下 http-echo、httpbin 镜像使用 未按文档实际搭建,但大致是这样 官方文档:https://higress.io/zh-cn/docs/overview/what-is-higress 了解:利用sealos快速安装kubernetes集群:https://note.youdao.com/s…...
Swagger3探索之游龙入海
引言 后端开发中常用的接口调用工具一般使用Postman、ApiPost工具,但后期需要与前端联调,要补充接口文档花费大量时间,此时Swagger3应运而生,大大提高沟通交流的效率。 引用依赖 <!-- Swagger3 调用方式 http://ip:port/swa…...
javaWeb项目-学生考勤管理系统功能介绍
项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JAVA技术 JavaSc…...
云备份项目认识、环境搭建以及所使用的库的介绍
一、云备份认识 将本地计算机一个受监管的文件夹的文件上传到服务器中,有服务器组织,客户端可以通过网页将文件查看并且下载下来,下载过程支持断点续传功能,并且服务器会对上传的文件进行热点管理,长时间没人访问的文…...
汇编语言第四版-王爽第2章 寄存器
二进制左移四位,相当于四进制左移一位。 debug命令实操,win11不能启动,需要配置文件 Windows64位系统进入debug模式_window10系统64位怎么使用debugger-CSDN博客...
MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索
宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…...
云原生靶场kebernetesGoat、Metarget
靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…...
【3D目标检测】Det3d—SE-SSD模型训练(前篇):KITTI数据集训练
SE-SSD模型训练 1 基于Det3d搭建SE-SSD环境2 自定义数据准备2.1 自定义数据集标注2.2 训练数据生成2.3 数据集分割 3 训练KITTI数据集3.1 数据准备3.2 配置修改3.3 模型训练 1 基于Det3d搭建SE-SSD环境 Det3D环境搭建参考:【3D目标检测】环境搭建(OpenP…...
k8s1.28.8版本安装prometheus并持久化数据
本文参考 [k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)前置要求: 已经部署了NFS或者其他存储的K8s集群. 这里注意networkpolicies网络策略问题,可以后面删除这个策略&#x…...
Mybatis-特殊SQL的执行
1. 模糊查询 在MyBatis中进行模糊查询时,有以下三种常见的实现方式: 1.1. 错误示范 先来个准备操作,并做一个错误示例 根据姓名,模糊查询用户,(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3…...
金融衍生品市场
金融衍生品市场 衍生金融品的作用衍生金融工具远期合约期货合约期权 衍生金融品的作用 套期保值(Hedging) 组合多头头寸(long position)与空头头寸(short position)例:股票与股指期货 投机 衍生金融工具 远期合约 定义:在将来…...
2、Cocos Creator 下载安装
Cocos Creator 从 v2.3.2 开始接入了全新的 Dashboard 系统,能够同时对多版本引擎和项目进行统一升级和管理!Cocos Dashboard 将做为 Creator 各引擎统一的下载器和启动入口,方便升级和管理多个版本的 Creator。还集成了统一的项目管理及创建…...
Docker版本:18.06.1安装
1、操作系统:CentOS 7.5以上 2、Docker版本:18.06.1 1、解压 tar -xvf docker-18.06.1-ce.tgz2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下 cp docker/* /usr/bin/3、将docker注册为service vim /etc/systemd/system/docker.service将下列…...
记 SpringBoot 使用@RequestBody 接收不到参数
POST请求,前端传的参数名字跟后端规定的参数一样。但是通过RequestBody注解接收的参数始终为NULL! //实体类中属性没有用驼峰命名 private String SubscribeID; /*** 标题*/ private String Title;解决方案: 1、字段上使用JsonProperty(valu…...
unity 打包安卓错误汇集
Failed to find target with hash string "android-34’ in: D:Pr 他说找不到sdk34level的我用as打开后卸载又重装,最后解决了 我放到Plugins/Android/下面的Java代码没有被编译 这个不知道为什么。我故意把代码写的有问题,会报错那种ÿ…...
C语言-文件操作
🌈很高兴可以来阅读我的博客!🌟我热衷于分享🖊学习经验,🏫多彩生活,精彩足球赛事⚽🔗我的CSDN: Kevin ’ s blog📂专栏收录:C预言 1. 文件的作用 …...
ADB 操作命令详解及用法大全
ADB 简介 ADB,全称 Android Debug Bridge,是 Google 提供的一款用于 Android 平台设备(包括真机和模拟器)调试、交互和管理的命令行工具。通过 ADB,开发者可以在电脑上对连接的 Android 设备执行一系列高级操作&#…...
指针数组。
指针数组 int c[5]{1,2,3,4,5};int *pc;printf("p:%d",p);return 0;输出:p:-756683712 说明p是地址值,*p就是取这个地址上的元素的值。所以printf(“*p:%d”,*p); 打印出来的是 *p:1 *pc,c是c[5]数组的首地址元素。 #include <iostream>…...
GitHub开源项目权限管理-使用账号和个人令牌访问
1.打开后台账号设置 2.找到左下角的Developer settings 3.找到Personal access tokens 的 Tokens(classic) 4.选择创建新证书 5.填写证书信息 6.点击生成证书,复制证书并且保存起来(血泪教训,证书只会在创建时显示一次,以后就再也…...
SpringBoot快速入门指南
Spring Boot 是一个基于 Spring 框架的“约定优于配置”的快速应用开发框架,旨在简化基于 Spring 的应用初始搭建和开发过程。它通过自动配置、起步依赖和嵌入式容器等特性,使开发者能够快速创建独立的、生产级别的 Spring 应用程序。 一、 核心特性与快…...
Cortex-R52 MBIST与March算法在嵌入式存储测试中的应用
1. Cortex-R52 MBIST测试技术解析在嵌入式系统开发中,存储器可靠性直接影响整个系统的稳定性。作为Arm Cortex-R系列中的实时处理器,Cortex-R52集成了PMC-R52(Programmable Memory Controller)模块,专门用于执行存储器…...
别再死记硬背段码了!用Python脚本自动生成数码管显示码表(支持共阳/共阴)
用Python解放双手:动态生成数码管段码的工程实践 数码管作为电子设计中最基础的显示元件之一,其驱动原理看似简单却暗藏玄机。传统开发流程中,工程师需要反复查阅手册或记忆十六进制段码,这种低效模式在复杂项目中将消耗大量时间。…...
3步搞定B站视频下载:BBDown让你的收藏从未如此简单 [特殊字符]
3步搞定B站视频下载:BBDown让你的收藏从未如此简单 🎬 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗?BBDo…...
告别SSH命令行:用VSCode的Log Viewer插件实时监控Linux syslog日志(附C程序测试)
告别终端监控:在VSCode中实现Linux系统日志可视化追踪 每次调试服务器应用时,你是否也厌倦了在SSH终端和代码编辑器之间反复切换?那些不断滚动的tail -f输出窗口不仅占用宝贵屏幕空间,还让问题排查变成了一场视觉追踪游戏。对于现…...
英雄联盟R3nzSkin换肤工具:5分钟快速上手免费皮肤解锁指南
英雄联盟R3nzSkin换肤工具:5分钟快速上手免费皮肤解锁指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 还在为英雄联盟国服昂贵的皮肤价…...
利用示波器直方图功能低成本测量信号抖动的方法与实践
1. 项目概述:用直方图低成本测量抖动在嵌入式系统、高速数字接口乃至电机控制的设计与调试中,信号抖动(Jitter)的测量和分析是一个绕不开的坎。无论是为了确保通信链路的误码率,还是为了验证时钟信号的纯净度ÿ…...
Harbor:统一管理MCP服务器的配置中心与团队协作平台
1. 项目概述:一个统一管理MCP服务器的“港口” 如果你和我一样,每天都在Claude Code、Cursor、VS Code这几个编辑器之间来回切换,同时还要折腾一堆MCP服务器,那你肯定也经历过这种痛苦:在 ~/.claude.json 里加一个配…...
长沙定制开发本地生活APP打造城市便民消费场景
随着长沙城市发展,市民对便民消费的需求越来越高,长沙本地生活APP定制开发也逐渐成为本地商家、政企单位布局数字化的重要选择。不同于通用模板APP,长沙定制本地生活APP可根据长沙本地特色,整合餐饮、生鲜、家政、休闲娱乐、政务便…...
ETS2LA:为《欧洲卡车模拟2》带来终极智能驾驶体验的5大核心功能
ETS2LA:为《欧洲卡车模拟2》带来终极智能驾驶体验的5大核心功能 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Assist 想…...
