个人主页点这里~
1.命名空间-namespace
简介
:在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
反面例子
:在c语言中:
![](https://i-blog.csdnimg.cn/direct/807a2c42cb2944ce80dc18e0d6ec1e04.png)
![](https://i-blog.csdnimg.cn/direct/7d870e57041e417ca4aa678f784c4829.png)
所以,在
c++中,我们可以使用
namespace这一关键字来处理这种问题:
![](https://i-blog.csdnimg.cn/direct/011f7f935f9b4311a2a938808a9496c0.png)
![](https://i-blog.csdnimg.cn/direct/578f54da1af94a3590ccfb3f3a022034.png)
namespace本质是定义出一个域,这个域跟全局域
各自独立
,
不同
的域可以定义
同名
变量,所以的rand不在冲突了。
我们通过
::
(域解析运算符)
来指定命名空间的成员。
![](https://i-blog.csdnimg.cn/direct/08becbcdbf8c4e2a8d0f6d3db42baae5.png)
注意
:1.namespace只能定义在
全局
,当然他还可以
嵌套定义(
和结构体的嵌套一个意思
)
。
2.
项目工程中多文件中定义的同名namespace会认为是⼀个namespace,不会冲突。
3.C++标准库都放在⼀个叫std(standard)的命名空间中。
域展开关键字
:
using
我们
展开命名空间中全部成员,项目不推荐,冲突风险很大,日常程序练习为了方便推荐使用,基本不会冲突。 且可以展开
部分成员
![](https://i-blog.csdnimg.cn/direct/d97b49fc7ce042eaa00d39f75775d71a.png)
![](https://i-blog.csdnimg.cn/direct/fcd639a280304774b9e2f7edab948bfe.png)
这一特性,极大方便了我们的自由度。
2.c++的输入和输出
不同于c语言,我们c++需要包含的<iostream>,展开就是input output stream(输入输出流)
1.std::cin 是 istream 类的对象。------用于输入类似于scanf
2.std::cout 是 ostream 类的对象。-------用于输出类似printf
3.std::endl 是一个函数,流插入输出时,相当于插入一个换行字符加刷新缓冲区。类似于'\n'。
4.<<是流插入运算符(用于输出),>>是流提取运算符(用于输入)。
使用格式方式:
1.输出
2.输入
3.C++的输入输出可以自动识别变量类型,且可以多数一次执行
3.缺省参数
C++中的缺省参数是一种在函数声明时给参数指定默认值的特性。这允许在调用函数时省略某些参数,编译器将自动使用这些参数的默认值。缺省参数非常有用,特别是当函数的大部分调用都使用相同的参数值时。
缺省参数又分为:
1.全缺省:全缺省就是全部形参给缺省值。
2.半缺省:半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。
注意:1.带缺省参数的函数调用,C++规定必须从左到右依次给实参,不能跳跃给实参。
2.函数声明和定义分离时,缺省参数
不能
在函数声明和定义中同时出现,
规定必须
函数声 明
给缺省
值
4.函数重载
C++支持在同一作用域中出现
同名函数
,但是要求这些同名函数的
形参不同
,可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用中出现同名函数的。
![](https://i-blog.csdnimg.cn/direct/5b59cb57ee0649d6901eee001b138d33.png)
5.引用
引用不是新定义⼀个变量,是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
就是给一块空间取上其他的名字,但仍然是这块空间
![](https://i-blog.csdnimg.cn/direct/2757e05da13e4a1c9ca4674efb29f1ef.png)
使用方法:
类型& 引用别名 = 引用对象;
![](https://i-blog.csdnimg.cn/direct/06e697f4a8934366a88aa192be8941ec.png)
今天分享到这里~