阿鑫来了  

内联函数 :

以 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;         是错误的 , 变量类型不一致

posted on 2021-04-21 17:47  阿鑫来了  阅读(61)  评论(0)    收藏  举报