5、inline函数(关键字) 在函数定义处添加
①编译阶段,此函数将不生成符号
②编译阶段,直接在调用点展开
③该函数本文件可见
内联函数与宏的区别:
①处理时机不同,宏在预编译阶段直接文本替换 内联函数是在函数调用点将函数展开
②inline 代码展开; 宏 文本替换,并无安全检查和类型检查
③内联函数时一种更安全的宏
inline本质上是一种以空间换时间的做法
使用时机:当函数开栈+清栈开销 > 执行开销 时使用内联函数(即适用于函数体较小的的函数)
6、引用 (取别名) 类型+& =引用
①引用必须初始化(底层以指针的方式实现,使用时系统自带解引用)
②引用不能改变
③引用不能引用不能取地址的数据
④引用不能引用变量所存放的值,只能访问引用变量所有引用的内存单元
常引用可以引用不能去地址的数据(不能取地址的放到临时量,常引用引用临时量)
7、new/delete
malloc()和free()是一组函数 malloc函数的所有权交给了栈上的变量 free函数在malloc时内核保存了
该地址和字节数
new/delete 是一组关键字
malloc 和new的区别
①new是关键字,malloc是函数
②new不用传申请内存的大小 malloc需要传大小
③new返回值类型安全 malloc的返回值不安全
④new申请失败后,抛出异常 malloc失败后返回NULL
⑤new不仅能开辟内存,还可以初始化 malloc只能开辟内存
⑥new开辟数组[]表示数组大小 malloc用sizeof_t接受总大小
⑦new申请的空间在自由储存区 malloc申请的空间在堆上
8、名字空间作用域 namespace 作用:解决标识符命名冲突
C:全局作用域 局部作用域
C++:名字空间作用域 namespace 类作用域 calss
namespace CY{…}
①调用时,用CY::+函数名
②using namespace CY …