C++入门

本文介绍了C++中的关键概念,包括命名空间用于解决命名冲突,缺省参数的使用和分类,函数重载的概念及其应用场景,以及引用的特性与使用。还讨论了内联函数的原理和注意事项,帮助读者理解C++语言的基础特性。
摘要由CSDN通过智能技术生成

💓博主CSDN主页:麻辣韭菜💓

⏩专栏分类:C++知识分享

🚚代码仓库:C++初级 🚚

🌹关注我🫵带你学习更多C++知识
  🔝🔝

目录

1.c++关键字

2.命名空间

3.C++输入&输出

4.缺省参数

4.1 缺省参数概念

4.2 缺省参数分类

5.函数重载

5.1 函数重载概念

6.引用

6.1 引用概念

6.2 引用特性

6.3 常引用

6.4 使用场景

1. 做参数

2. 做返回值

7.内联函数

7.1 概念

7.2 特性


1.c++关键字

C++在C语言的基础上新增了30多个关键字。

2.命名空间

学过C语言的都知道 在同一作用域 变量 函数 结构体 是不能重名。

为了弥补C语言的缺陷 C++祖师爷搞出来个命名空间。

什么是命名空间?

简单来说命名空间就是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

当我们定义一个rand 整型变量执行打印函数报错,报错的原因的是和C语言库函数rand重名了。

这对于一个大项目来说 不同的人来写这个项目,就会有可能出现同名的定义。

为了避免这个问题祖师爷用命名空间来解决这个问题。

上图的namespace 就是命名空间的关键字。 zs就是这个命名空间的名字。你也可以取李四。

那么我们要怎么访问到这个rand?

命名空间的使用有三种方式:
第一种  加命名空间名称及作用域限定符

zs是命名空间的名字 ::是作用域限定符 不知道什么是作用域的建议先学C。

这样我们就不会和库函数重复了。

using 将命名空间中某个成员引入

使用 using namespace 命名空间名称 引入

总结3种不同方法

第一种 只能访问命名空间你所指定的。

第二种 和第一种一样。

第三种 是命名空间的所有的成员都访问。

3.C++输入&输出

cout 是C++的库函数 等于C语言的printf//打印函数。 endl 等于c的\n。//换行。

cin 等于C语言的 scanf函数。//输入

4.缺省参数

4.1 缺省参数概念

缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

4.2 缺省参数分类

• 全缺省参数
• 半缺省参数
• 全缺省参数
如图 上面给形参参数 就是全缺省参数。需要函数使用者自己没有输入参数 默认就是4+1= 5。

半缺省参数

注意:
1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给
2. 缺省参数不能在函数声明和定义中同时出现

5.函数重载

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。

5.1 函数重载概念

函数重载: 是函数的一种特殊情况, C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这些同名函数的形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现功能类似数据类型不同的问题。
 
C++支持函数重载 是因为这些函数 在编译过程中 汇编指令call 加载的地址是不一样的。
具体想知道细节的 可以学学函数栈帧创建与销毁。
汇编完成了后编译器会根据他们参数个数和类型重新修饰函数名。
比如第一个函数在VS编译器下修饰成Addii2 第二个函数Adddd2。
注意 如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办
法区分。

6.引用

6.1 引用概念

引用 不是新定义一个变量,而 是给已存在变量取了一个别名 ,编译器不会为引用变量开辟内存空
间,它和它引用的变量 共用同一块内存空间。
比如: 李逵 ,在家称为 " 铁牛 " ,江湖上人称 " 黑旋风 "

注意: 引用类型 必须和引用 实体 同种类型

6.2 引用特性

1. 引用在 定义时必须初始化
2. 一个变量可以有多个引用
3. 引用一旦引用一个实体,再不能引用其他实体

6.3 常引用

6.4 使用场景

1. 做参数

如果是C语言 要交换两个数。必须传地址。
但是引用本来就是它自己。

2. 做返回值

这里 n 被static修饰后 变成静态变量 存在堆区 
所以要做返回值  必须出作用域不别销毁才行 。
就好比 你今天开了一间房 退房时你放了一只猫 
第二天你记起你的猫没有带走 你这时再去酒店找猫
就有3种情况 1是还在 2是不在了 3是没有被发现在床下。
如果这间房间被别人重新开了 你再进去就是违法的。

7.内联函数

7.1 概念

inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。
其实出现内联函数是因为C语言的宏函数。
C语言的宏函数有几个缺点。
一是不能调式。
二是宏函数很容易出错,维护性 和可读性都不行。
三是宏函数没有类型安全检查

7.2 特性

1. inline 是一种 以空间换时间 的做法,如果编译器将函数当成内联函数处理,在 编译阶段,会
用函数体替换函数调用 ,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运
行效率。
2. inline 对于编译器而言只是一个建议,不同编译器关于 inline 实现机制可能不同 ,一般建
议:将 函数规模较小 ( 即函数不是很长,具体没有准确的说法,取决于编译器内部实现 )
是递归、且频繁调用 的函数采用 inline 修饰,否则编译器会忽略 inline 特性。下图为
C++prime 》第五版关于 inline 的建议:
一般内联函数都是10多行的代码。
3. inline 不建议声明和定义分离,分离会导致链接错误。因为 inline 被展开,就没有函数地址
了,链接就会找不到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值