C++:1.基础
1.命名空间namespace
1.c++中的四种域:函数局部域,全局域,命名空间域,类域。前两种不仅影响编译时的查找逻辑还影响变量的生命周期,后两种不影响生命周期(生命全局)
2.当全局的a与局部的a同时存在时,局部内使用局部a;局部没有默认优先用全局
3.::a使用全局的a,bit::a使用bit的a
4.namespace只能定义在全局,可以嵌套定义
5.在同一工程多文件定义的同名namespace认为是同一namespace
6.C++标准库都放在std中
7.命名空间使用:1*bit::a
2*using namespace bit
3*using bit::a
2.缺省参数(C语言不支持)
1.定义:缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参 则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)
2.全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左 依次连续缺省,不能间隔跳跃给缺省值。
3.带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
4.函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省 值。
3.函数重载(C语言不支持)
1.定义:
4.引用
定义:变量的别名,类型& 引⽤别名 = 引⽤对象;本质是传址
1.引用在定义时必须初始化,不能空引用
2.一个变量可以有多个引用
3.引用只能引用一个实体(eg:int& b=a;int c=20;b=c;这里是赋值而非引用)
4.const引用
- 可以引⽤⼀个const对象,但是必须⽤const引⽤。const引⽤也可以引⽤普通对象,因为对象的访 问权限在引⽤过程中可以缩⼩,但是不能放⼤。
- 不需要注意的是类似 int& rb = a*3;(变量运算) double d = 12.34; int& rd = d;(类型转换) 这样⼀些场 景下a*3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产⽣临时对 象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥ 就触发了权限放⼤,必须要⽤常引⽤才可以。
- 所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象, C++中把这个未命名对象叫做临时对象。
5.sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数(32位平台下占4个字节,64位下是8byte)
5.inline
6.nullptr(空指针,以后用这个)
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)//在C语言中void*可以给任意其他类型指针
#endif
#endif
更多推荐

所有评论(0)