namespace
影响的是编译过程,对于命名的封装,之后再进行引用
应用::
类似一头文件,编译时展开,是定义一个和全局域不同的定义域
是单纯的隔离,不会影响生命周期,该是栈是,其他同样
可以嵌套定义
即一个文件之中可以在其中放入多个namespace
类似与bit::1::x
典型的套娃
编译时查找是先是找局部,之后是全局
二运用命名空间
using namespace 之后还会到namespace之后寻找
前提,没有命名冲突
using namespace就是将命名空间展开
不推荐,平时练习可以,又命名冲突分享
单独用一个,using 名字 ::元素
输入输出
<iostream>是标准的输入输出库
std::cout<<l流插入 直接输出 支持连续的流插入
std::cin<<流提取 支持直接输入,支持连续的流输入:
std::endl :本质相当于加一个换行,兼容性极好
控制精度极其麻烦
cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要
通过命名空间的使⽤⽅式去⽤他们。
有缓存区的概念,这里先不提
函数不管是那个库直接用,报错再说
缺省参数
又可以叫做默认参数,
为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参
则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。
半缺省参数必须从右往左
依次连续缺省,不能间隔跳跃给缺省值。
实际意义:不用过于麻烦,日常就可以好用,不需要时可以方便,用是可以控制
不好的地方:顺序结构可能会过于扩容
函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省
值。
总结:给一个常用工具,也就是备胎
函数重载
C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同
或者类型不同。
C语言是不支持的
现实意义:用起来更舒服,可读性更强
返回值不同无法区分,无法确定调用哪一个函数
重点定义:编译语言不可以有异议
引用
给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块
内存空间。
类型& 引⽤别名 = 引⽤对象;
都一样是属于一块空间多个名字
可以无限套娃
特点:
引⽤在定义时必须初始化
⼀个变量可以有多个引⽤
引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体
和typedef的区别:一个是变量,一个是类型
典型运用:形参命名为,这样就是别名
可以无限套娃