内联函数 :
以 inline 修饰的函数叫内联函数 , 编译时C++编译器会在调用内联函数的地方展开 ,
没有函数压栈的开销 , 内联函数提示程序运行的效率 .
特性 :
1. inline是一种以空间换时间的做法 , 省去调用函数开销 ,
所以代码很长或有循环的函数不适合使用作为内联函数 .
2. inline对于编译器而言只是一个建议 , 编译器会自动优化 ,
如果定义为 inline 的函数体内有循环或递归,编译器优化时会忽略内联 .
3. inline不建议声明和定义分离 , 分离会导致链接错误 .
因为 inline 被展开 , 就没有函数地址了 , 链接就会找不到 .
内联函数类似于宏,但有差异.
宏的优缺点 :
优点 :
1 . 增强代码的复用性 ;
2 . 提高性能 .
缺点 :
1 . 不方便调试 ;
2 . 导致代码可读性差 , 可维护性差 , 容易误用 .
3 . 没有类型安全检查 .
C++中哪些技术可以代替宏?
1 . 常量定义 , 常用const
2 . 短小函数定义 , 换用内联函数
关键字 auto
C++中auto和C语言中的auto意义不同 ;
C语言中 , 使用auto修饰的变量 , 是具有自动存储器的局部变量 ;
C++中 , auto是一个新的类型指示符来指示编辑器 , auto声明的变量
必须由编译器在编译时期推导而得 .
auto : 自动类型推导,编译器会自动推导变量的类型;
int TestAuto(){ return 10; } void test(){ auto a = 10; auto b = 'a'; auto c = 2.0; auto d = TestAuto();
}
void test2(){ int a = 10; int b = a; int& ra = a; //使用auto定义指针 : 可以不加 * auto* pa = &a; auto pb = &b; //使用auto定义引用 : 必须加 & auto& rb = b; auto c = b; }
注意:一行要定义多个变量时 , 表达式推导出的类型必须一致
auto a = 1, b = 2, c = 2.0; 是错误的 , 变量类型不一致

浙公网安备 33010602011771号