C++从命名空间/缺省参数/函数重载引用/内联函数入门

发布时间:2026/8/29 7:40:00

C++从命名空间/缺省参数/函数重载引用/内联函数入门
C学习内容C语法STL数据结构C发展历史重要节点C11C20C特性编译器vsg[linux],clangC语法命名空间namespace存在意义变量函数类的名称都存在于全局作用域中可能会导致冲突。所以使用namespace关键字对标识符的名称进行本地化。namespace的定义namespacefun//(名字){intrand5;//内容可以是变量函数类型}namespace的说明namespace本质是一个域和全局域各自独立不同的域可以定义同名变量C中域有函数局部域全局域命名空间域类域域影响编译时语法查找变量/函数/类型出处没有指定域先局部再全局指定域直接去这个域局部域和全局域影响出处和生命周期命名空间域和类域不影响生命周期namespace只能定义在全局可以嵌套定义项目工程中多文件中定义的同名namespace会被认为是一个namespace不会冲突自动合成为一个C标准库都放在一个叫std的命名空间中实际项目中不能一下全包#includeiostreamnamespacemy_name{namespacemy_friend{intage18;}namespacemy_family{intage40;}inta5;intmain(){cout::aendl;//全局域为空格coutmy_name::my_family::ageendl;}}namespace的使用编译器默认只会在局部或全局域查找所以我们要使用命名空间中的定义有三种方式指定命名空间访问项目中推荐使用using将命名空间中某个成员展开项目中经常访问不存在冲突使用展开命名空间中的全部成员风险太大usingmy_name输入输出iostream 是标准的输入输出流库iostream间接包含printf和scanf(vs中是这样stdcin是istream类的对象是标准输入流stdcout是ostream类的对象是标准输出流stdendl是一个函数流插入输出时相当于插入一个换行字符加刷新缓冲区要通过namespace的使用方法用std是流插入运算符是流提取运算符关键在于该流能更好的支持自定义类型对象的输入和输出例如结构体可以直接输出整个结构体printf需要指定格式原生定义类型C的输入和输出可以自动识别变量类型本质是通过函数重载实现缺陷是可能在竞赛中影响效率缺省参数默认参数定义声明或定义函数时为函数的参数指定一个缺省值全缺省 全部形参给缺省值半缺省部分形参给缺省值实参从左往右传连续形参从右往左传连续 意义减少歧义应用开辟已知大小的空间方便阅读函数声明和定义分离时缺省参数不能同时在函数声明和定义同时出现规定必须函数声明给缺省值函数重载多态C支持同一作用域中出现同名函数但是要求同名函数的形参不同参数个数或类型不同与返回值无关注有些情况调用有歧义编译器不知道调用谁(避免voidf1(){coutf()endl;}voidf1(inta){coutf(int a}endl;}引用概念给已经存在的变量取别名不是定义新变量用法类型 引用别名引用对象intba;intx20;bx;引用不会改变指向所以这里是把x赋值修改a和b没有改变变量地址的概念引用功能1做函数形参修改形参影响实参引用功能2做函数形参减少拷贝提高效率结构体voidswap(intp1;intp2){inttempp1;p1p2;p2temp;}intmain(){intx1,y2;swap(x,y);}引用传参跟指针传参功能类似引用传参更方便一些互不可替代传引用返回intSLAt(SLsl,inti){assert(isl.size);returnsl.a[i];SLAt(s,i)1;}4.值返回临时变量拷贝具有常性5.引用功能3引用做返回值类型修改返回对象6.引用功能4引用做返回值类型减少拷贝提高效率注意不适当的引用返回可能造成野引用这样写不安全返回ret别名不安全ret是局部对象func结束ret就销毁的了返回他的别名本质也是一种类似野指针的行为引用的特性引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体再不能引用其他实体引用不能改变指向所以在链式结构中无法代替指针这种场景必须使用指针const引用指针和引用涉及权限缩小和放大权限不能放大权限可以缩小//权限不能放大普通引用不能绑const变量constinty1;intr2y;//报错//普通引用不能绑定常量const引用可以constintr2y;//通过//const引用可以接受普通变量常量表达式临时值intx0;constintr3x;//不能通过const引用修改数据inta10;constintra;r20;//报错const引用只读const引用可以存临时变量临时变量具有常性需要使用const引用类型转换时需要临时对象引用和指针的关系在C中指针和引用二者的功能具有重叠性二者相辅相成但是各自又有各自的特点都是无法替代的。对比项目引用指针空间不开开初始化必须非必须是否可修改否是怎样访问对象直接访问解引用sizeof含义引用类型大小地址空间所占大小inline内联函数inline修饰的函数C编译器在编译时会在调用的地方展开内联函数代码原地展开无函数调用无栈帧可以提高效率编译器不一定百分百内联递归大函数仍会建栈帧inline适合频繁调用的短小函数(否则内存太大inline的目的是替代宏函数(宏函数实现很复杂很容易出错vs的debug版本默认不展开inline需要设置inline不建议声明和定义分离到两个文件分离会导致链接错误inline被展开就没有函数地址链接时就会报错inlineintadd(intx,inty){returnxy;}intmain(){intretadd(1,2);}nullptr使用的目的解决C/C中的NULL存在的问题nullptr是一个特殊的关键字是一种特殊类型的字面量在C11中引入作用可以转换成任意其他类型的指针类型优点使用nullptr可以避免类型转换的问题因为nullptr只能被隐式转换为指针类型而不能被转换为整数类型

相关新闻

构建高质量古诗词数据集:赋能大模型训练的核心技术与实践

构建高质量古诗词数据集:赋能大模型训练的核心技术与实践

2026/8/29 7:40:00

简介:本资源是面向大语言模型训练与古诗文NLP任务的高质量中文古诗词数据集,覆盖先秦至现代逾两千年的经典文本,专为算法工程师、AI研究员及中文信息处理学习者优化清洗。压缩包共123.72MB,包含结构化文本文件(如唐诗、…

数据库锁与日志核心原理:MySQL面试与实战全解析

数据库锁与日志核心原理:MySQL面试与实战全解析

2026/8/29 7:40:00

数据库锁和日志,在牛客面经里出现频率有多高,不用我多说。尤其是这两年互联网大厂后端岗面试,几乎每一轮都会有人被问到“MySQL 的锁机制”或者“redo log、binlog、undo log 的区别”。我见过不少候选人,八股文背得滚瓜烂熟&…

2026数字人直播软件5款深度横评:针对性解决多渠道开播兼容痛点

2026数字人直播软件5款深度横评:针对性解决多渠道开播兼容痛点

2026/8/29 7:40:00

引文/摘要:2026年,跨平台数字人直播软件已成商家标配,但“抖音开播流畅、快手却卡顿”“视频号接口不兼容”“美团本地生活挂载不上”这类兼容性问题,正让无数运营团队头疼不已。本文基于多平台适配能力、性价比、操作门槛、功能完…

NumPy核心模块实战指南:文件读写、随机数与线性代数应用

NumPy核心模块实战指南:文件读写、随机数与线性代数应用

2026/8/29 8:50:05

1. 项目概述:为什么说掌握NumPy是数据科学的“第一块砖”?如果你刚开始接触Python数据分析、机器学习或者科学计算,那么NumPy这个名字你一定不陌生。它几乎是所有相关领域库的底层依赖,比如Pandas、Scikit-learn、TensorFlow和PyT…

C++ vector完全指南:从动态数组原理到高效使用与避坑

C++ vector完全指南:从动态数组原理到高效使用与避坑

2026/8/29 8:50:05

1. 项目概述:为什么vector是C程序员的“瑞士军刀”? 如果你刚开始学C,可能觉得数组就够用了,毕竟它能装一堆数据。但当你真正开始写项目,尤其是需要处理动态变化的数据集合时,很快就会遇到瓶颈:…

如何一次排查完6个不稳定测试:Superpowers并行代理分发与条件等待完整指南

如何一次排查完6个不稳定测试:Superpowers并行代理分发与条件等待完整指南

2026/8/29 8:50:05

如何一次排查完6个不稳定测试:Superpowers并行代理分发与条件等待完整指南 【免费下载链接】superpowers An agentic skills framework & software development methodology that works. 项目地址: https://gitcode.com/GitHub_Trending/su/superpowers …

数学建模竞赛:用Matplotlib绘制专业图表的核心技巧与避坑指南

数学建模竞赛:用Matplotlib绘制专业图表的核心技巧与避坑指南

2026/8/29 8:50:05

1. 项目概述:为什么数学建模离不开Matplotlib? 如果你参加过数学建模比赛,或者正在准备,那你肯定知道一个残酷的现实:评委看你的论文,第一眼看的往往不是你的模型有多精妙,而是你的图好不好看。…

qiaomu-anything-to-notebooklm项目全景:15种输入格式×8种输出格式组合全解析

qiaomu-anything-to-notebooklm项目全景:15种输入格式×8种输出格式组合全解析

2026/8/29 8:50:05

qiaomu-anything-to-notebooklm项目全景:15种输入格式8种输出格式组合全解析 【免费下载链接】anything-to-notebooklm Claude Skill: Multi-source content processor for NotebookLM. Supports WeChat articles, web pages, YouTube, PDF, Markdown, search queri…

多Agent任务看板:实现人机协同的任务调度与审批

多Agent任务看板:实现人机协同的任务调度与审批

2026/8/29 8:40:04

这次我们来看一个很特别的项目:Human task board for my agents。这个项目解决的是 AI Agent 使用过程中一个非常实际的问题:当你有多个 Agent 在并行干活时,谁来分配任务、谁来跟踪进度、谁在关键节点做人工确认?多数 Agent 框架…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…