1.命名空间
1.1namespace的价值
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全
局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名
冲突或名字污染,namespace关键字的出现就是针对这种问题的。
c语⾔项⽬类似下⾯程序这样的命名冲突是普遍存在的问题,C++引⼊namespace就是为了更好的解决 这样的问题。
此种情况,会报错, error C2365: “rand”: 重定义;以前的定义是“函数”
1.2namespace的使用
•
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。
•
namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。
看到图中C::rand,你此时一定很好奇,这是什么,往下看,你便知道了。
1.3 命名空间使⽤
编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。所以下⾯程序会编译报错。所以我们要使⽤命名空间中定义的变量/函数,有三种⽅式:
1.指定命名空间访问
2.using将命名空间中某个成员展开
3.展开命名空间中全部成员(这个一般不太建议)
2.C++的输入&输出
1.<iostream> 是标准的输⼊、输出流库,所以使用输入输出时,需要包括头文#include<iostream>
2.cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。
3.使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊输出可以⾃动识别变量类型,其实最重要的是C++的流能更好的⽀持⾃定义类型对象的输⼊输出.
3.缺省参数
1.缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。
2.
全缺省就是
全部形参给缺省值
,半缺省就是
部分形参给缺省值
。C++规定半缺省参数必须
从右往左依次连续缺省
,不能间隔跳跃给缺省值。
3.带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
4.函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省 值。
4.函数重载
C++⽀持在同⼀作⽤域中出现
同名函数
,但是要求这些同名函数的
形参不同
,可以是
参数个数
不同或者
类型不同
又或是
参数顺序不同
。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。
!!!注意:
返回值不同不能作为重载条件,因为调⽤时也⽆法区分
嘟嘟嘟,今天分享完毕,后续C++持续更新!!!