C++复习(1)命名空间,引用,宏

命名空间

官方库,自己的库,别人的库  

命名空间可以有变量,函数,结构体

展开命名空间 (可嵌套)

展开后就不用::了,但是可能会引起冲突(相当于把墙拆了)

全部展开:

部分展开(部分授权):只要不引起冲突即可使用(部分展开也有冲突就不展开 )

多个.h文件使用一个命名空间函数(名字相同) 可以在一个个文件使用(合并使用)

<<流插入,endl换行符   >>流提取

cout 跟 cin能自动识别类型 

缺省参数

两种调用 有参数就是2 五参数默认就是1

全缺省 

半缺省

声明和定义不允许同时给缺省参数 ,所以分离时候声明给,定义不给 

static可以改变连接属性吧外部链接改成内部链接


函数重载 

c语言不允许同名函数,c艹可以但是要求函数重载

函数重载:1可以类型不同,2参数不同,3可以顺序不同

函数名相同,参数不同(原理是函数重载)

c++声明和定义不能分离

c++声明和定义不能都有缺省参数,防止编译器分不清(默认声明给定义不给)

重定义链接错误

stackpush函数定义在.h定义又在.cpp里定义

关键字

 编译器编译过程:

无法解析的外部符号

说明可能函数只有声明没有定义报了连接错误

c语言报的是函数名连接错误信息

引用 (引用)

&在类型和变量中间引用

b++,a也会++,此时b和a等同

引用的特性

引用在定义时必须初始化

引用做返回值

传引用返回,相当于返回n的别名

第一次打印1第二次是随机值

第一次调用函数先传参ret返回给了ostream(out),建立栈,把空间覆盖了,第二次调用再去取值就是第一次覆盖的结果

       不清理栈结果就是7或随机值所以这些程序没有意义,所以这样的函数引用返回没有意义

 

 结论:

如果函数返回时,出了函数作用域,如果返回对象还在(没有给系统),则可以使用引用返回,如果已经返还给系统了,则必须使用船只返回

传引用传参,传引用返回优势

读写一体:

常引用

引用好比一个人的权限,在引用中 权限可以平移(平替不变),可以缩小,但是不可以放大

 

下面也可以,且x的修改会影响y,因为是引用y就是x (y相当于带上紧箍的x(孙悟空))

赋值可以(因为是复制拷贝) 

c++类型转换会有临时变量(临时变量具有常性)相当于权限放大用const相当于权限没有放大

 

值拷贝不涉及权限放大问题,   临时对象(a)具有常性 所以前面要加const

const int & ret=fun()  加了const引用后会延长生命周期

 

 引用和指针的不同

宏缺点和优点 

优点:没有类型的限制,可以替换,针对频繁调用的小函数可以减少建立栈提高效率     

缺点:容易出错

宏函数 宏后面不能给分号;  +号的优先级比与或高

内联函数

优势:不会建立栈

内联函数:不能定义和声明分开到两个文件,不然会引起链接错误

声明和定义分开不能直接调用,可以间接调用展开,因为没必要生成指令进入符号表生成地址,间接调用直接就展开f()了

所以内联函数就直接定义到.h文件

只有声明没办法展开只能call地址但是符号表没有

inline:会在调用的地方展开(跟调用功能相同)

不能所有地方都用内联函数不然会引起代码膨胀 

范围 for

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值