C++ 入门核心语法详解:命名空间、输入输出、缺省参数、函数重载、引用、inline 与 nullptr
目录一、命名空间 namespace二、C 输入与输出三、缺省参数默认参数四、函数重载五、引用六、inline 内联函数七、nullptr 空指针一、命名空间 namespace1. 作用防止命名冲突。当项目规模变大、多人协作或引入第三方库时不同模块中很容易出现同名变量、函数或类型命名空间通过域隔离来解决这一问题。2. 定义定义方式namespace 名称 {}。C 中的域有函数局部域、全局域、命名空间域和类域。域影响的是编译时语法查找一个变量、函数或类型出处声明或定义的逻辑有了域隔离名字冲突就解决了。局部域和全局域除了影响编译查找逻辑还会影响变量的生命周期命名空间域和类域不影响变量生命周期。命名空间只能定义在全局而且可以嵌套定义。不同文件中定义相同名字的命名空间会自动合并为一个。C 标准库都被放在一个名为std的命名空间中。3. 使用编译查找一个变量的声明或定义时默认只会在局部或全局查找不会到命名空间里面去查找所以直接使用命名空间中的变量或函数会编译报错。要使用命名空间中定义的变量或函数有三种方式指定命名空间访问例如my_namespace::a项目中推荐这种方式。using 将命名空间中某个成员展开例如using my_namespace::a项目中经常访问且不存在冲突的成员推荐这种方式。展开命名空间中全部成员例如using namespace std;项目不推荐冲突风险很大日常小练习程序为了方便推荐使用。二、C 输入与输出iostream是标准的输入、输出流库定义了标准的输入、输出对象。std::cin是istream类的对象主要面向窄字符的标准输入流。std::cout是ostream类的对象主要面向窄字符的标准输出流。std::endl是一个函数流插入输出时相当于插入一个换行字符并刷新缓冲区。是流插入运算符是流提取运算符。可以把cout ...记为把内容插入到控制台cout中把cin ...记为把控制台cin的内容提取到变量中。使用 C 输入输出更方便不需要像printf/scanf那样手动指定格式C 的输入输出可以自动识别变量类型本质是通过函数重载实现的。更重要的是C 的流能更好地支持自定义类型对象的输入输出。三、缺省参数默认参数1. 定义缺省参数是声明或定义函数时为函数的参数指定一个缺省值。调用该函数时如果没有指定实参则采用该形参的缺省值否则使用指定的实参。分为全缺省参数和半缺省参数。2. 全缺省全部形参都给出缺省值。3. 半缺省部分形参给出缺省值且规定必须从右往左依次连续缺省不能间隔跳跃给缺省值。4. 调用规则带缺省参数的函数调用规定必须从左到右依次给实参不能跳跃给实参。5. 声明与定义分离函数声明和定义分离时缺省参数不能在函数声明和定义中同时出现规定必须由函数声明给缺省值。四、函数重载C 支持在同一作用域出现同名函数但要求这些同名函数的形参不同可以是参数个数不同或参数类型不同。仅仅只有返回值类型不同不构成函数重载。五、引用1. 概念和定义引用不是新定义一个变量而是给已存在的变量取一个别名且引用与被引用的变量共同使用一块内存空间。2. 引用的特性引用在定义时必须初始化。一个变量可以有多个引用。引用一旦引用了一个实体就不能再引用其他实体。3. 引用的使用引用在实践中主要用于传参以及做返回值来使用。引用传参和指针传参的功能类似但引用传参更方便。4. const 引用可以引用一个const对象但必须用const引用。const引用也可以引用普通对象因为对象的访问权限在引用过程中可以缩小但不能放大。类似int rb a * 3;或double d 12.34; int rd d;的场景中a * 3保存在一个临时对象中int rd d在类型转换的过程中也会产生临时对象存储中间值。也就是说rb和rd引用的都是临时对象而 C 规定临时对象具有常性所以这两段代码触发了权限放大。应该改为const int rb a * 3;和double d 12.34; const int rd d;。临时对象编译器需要一个空间暂存表达式的求值结果时临时创建的一个未命名的对象。5. 指针和引用的关系在语法概念上引用是一个变量的取别名不开空间指针是存储一个变量的地址要开空间。引用必须初始化指针建议初始化但不是必须的。引用在初始化时引用一个对象之后就不能再引用其他对象但指针可以不断改变指向对象。引用可以直接访问指向对象指针需要解引用才可以访问指向对象。sizeof含义不同引用的结果为引用类型的大小指针始终是地址空间占用的字节数32 位下 4 字节64 位下 8 字节。指针很容易出现空指针和野指针引用很少出现更安全。六、inline 内联函数用inline修饰的函数叫做内联函数。编译时 C 编译器会在调用的地方展开内联函数这样调用内联函数就不需要建立栈帧从而提高效率。inline对于编译器只是一个建议编译器会自行判断是否展开。设计inline是为了替代 C 语言的宏函数。VS 编译器 debug 版本下默认不展开inline这样方便调试。inline不建议声明和定义分离到两个文件分离会导致链接错误。因为inline被展开后没有函数地址链接时会出现报错建议直接放在.h文件中。七、nullptr 空指针nullptr是 C11 才有的。它可以转换为任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题因为nullptr只能被隐式地转换为指针类型而不能被转换为整数类型。以后 C11 版本及以后的代码都用nullptr就可以了。

相关新闻

线上雅思培训这样选,轻松提分1.5

线上雅思培训这样选,轻松提分1.5

背景:作为一名正在准备留学申请的职场人士,我花了大量时间研究线上雅思培训课程。这篇文章分享我的调研经验,帮助同样需要提升英语水平的同学找到适合自己的学习方式。如何选择线上雅思培训?课程体系是否科学?系统的课…

2026/8/26 13:01:33 阅读更多 →
基于MCP协议构建超级AI Agent:集成地图、文件与浏览器自动化

基于MCP协议构建超级AI Agent:集成地图、文件与浏览器自动化

1. 从“聊天”到“做事”:为什么我们需要一个能看、能写、能操控的超级 Agent?如果你和我一样,在过去一年里深度体验过各种 AI 助手,无论是 ChatGPT、Claude 还是国内的各类大模型,你可能会有一个越来越强烈的感受&…

2026/8/19 21:49:58 阅读更多 →
LLM服务可扩展性深度解析:从Titan Transients到高性能实践

LLM服务可扩展性深度解析:从Titan Transients到高性能实践

如果你正在构建一个基于大语言模型(LLM)的应用,是否遇到过这样的困境:模型推理速度时快时慢,响应延迟飘忽不定,尤其在流量高峰时,服务稳定性急剧下降?或者,当你试图通过增…

2026/8/17 21:11:04 阅读更多 →

最新新闻

如何使用PHP的性能分析工具来定位和解决性能瓶颈?

如何使用PHP的性能分析工具来定位和解决性能瓶颈?

当我们说“性能分析工具”时,我们指的是那些能帮助我们查看和理解代码运行效率的工具。在PHP中,有很多这样的工具,但其中一个非常受欢迎的是Xdebug。1. 安装Xdebug首先,你需要在你的PHP环境中安装Xdebug。这通常涉及到在你的php.i…

2026/8/26 13:53:47 阅读更多 →
在PHP中,如何实现基于事件的编程模型以提高性能?

在PHP中,如何实现基于事件的编程模型以提高性能?

在PHP中,基于事件的编程模型主要是用来处理那些需要等待某些外部操作(比如数据库查询、文件读写、网络请求等)完成的情况。通常,这些操作会花费一些时间,如果我们的代码只是傻傻地等在那里,不做其他事情&am…

2026/8/26 13:53:47 阅读更多 →
如何解决mysql千万级别的数据表查询缓慢的问题?

如何解决mysql千万级别的数据表查询缓慢的问题?

当MySQL的数据表达到千万级别甚至更多时,查询性能可能会受到影响。这主要是因为数据量的增加导致查询时需要检查更多的数据,从而增加了查询时间。为了解决这个问题,我们可以采取以下策略:索引:索引就像书的目录。没有目…

2026/8/26 13:53:47 阅读更多 →
卷积通用模型的剪枝、蒸馏---剪枝篇(此处以deeplabv3+为例,可根据模型自行定制剪枝层)

卷积通用模型的剪枝、蒸馏---剪枝篇(此处以deeplabv3+为例,可根据模型自行定制剪枝层)

之后的两篇文章是对前段时间工作的一个总结。 采用DepGrap进行结构化剪枝,剪枝方法是利用BN进行通道剪枝。 一、原理 网络结构通常会在卷积层之后插入一个 BN 层,并带有通道级缩放/移位参数。因此,我们可以直接利用 BN 层中的 γ 参数作为网络瘦身所需的缩放因子。它的巨大优…

2026/8/26 13:53:47 阅读更多 →
百度网盘怎么加速下载?2026最新PanDownload多线程配置提速详解

百度网盘怎么加速下载?2026最新PanDownload多线程配置提速详解

很多人在日常存储和获取文件时,经常会遇到下载进度异常缓慢的情况,这不仅耽误时间,也影响使用心情。造成下载缓慢的因素其实有很多,既有本地设备和网络的原因,也和传输链路及节点负载息息相关。了解这些具体原因并掌握…

2026/8/26 13:52:42 阅读更多 →
jQuery的Ajax请求和PHP交互的接口是不是RESTful API?

jQuery的Ajax请求和PHP交互的接口是不是RESTful API?

是不是RESTful API?jQuery的Ajax请求和PHP交互的接口可以是,也可以不是RESTful API。这主要取决于你如何设计和实现这个接口。RESTful API是一种设计风格和原则,它要求接口的设计遵循一定的规范,如使用HTTP方法(GET、P…

2026/8/26 13:52:42 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

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

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

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

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

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

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

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

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

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

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →