栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习笔记(2. 引用. 内联函数)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习笔记(2. 引用. 内联函数)

目录

引用

引用的基本知识

使用const修饰引用

引用作为参数与返回值

引用与指针的区别

内联函数

内联函数的定义


引用

引用的基本知识

C++中引用的功能和指针几乎相同,但有指针不具有的优点

引用相当于是对一个变量起别名(小名) 别名与函数本来的名字等价

//引用的定义
//引用符号:&  
//与取地址公用一个符号

int main()
{
    int a = 0;
    int& b = a; //给变量a起一个别名叫做b a与b是同一个变量

    return 0;
}

引用声明的时候必须初始化.

一个变量可以有很多的引用.

引用可以引用 引用, 就是说可以给别名再起别名

引用一但初始化就不能更改

使用const修饰引用

const修饰变量 可以变为常变量, 引用也是类似的

const修饰引用可以使引用具有常性

引用只能权限小于等于原本的变量

int main()
{
    const int a = 10;
    const int& b = 10;

    double d = 3.14;
    const int& i = d //double转换成int使先转换成临时变量 临时变量具有常性 所以可以赋值给引用

    int c = 20;
    const int& = c; //可以

    return 0;
}

引用作为参数与返回值

可以代替指针使用,且比指针更清晰 

void swap(int& a, int& b)
{
    int tmp = a;
    a = b;
    b = tmp;
}

 引用作为返回值时返回的是局部变量的地址,函数结束时栈帧释放 这时引用为野指针, 

正确的方法是使用static修饰 使变量不被销毁

int& count()
{
    static int num = 0;
    //int num = 0;  错误
    ++num;

    return num;

}

引用与指针的区别

在语法上,指针有独立开辟的空间, 引用没有开辟空间

在底层原理上 二者完全相同

内联函数

内联函数与C语言的宏定义一样

调用时直接展开没有函数的压栈

函数短小简单的情况下使用内联函数

太长或递归循环不适用

内联函数只是对编译器的建议, 编译时是否展开由编译器决定

内联函数声明和定义不能分开,会发生链接错误,因为函数没有地址

内联函数的定义
inline void swap(int& a, int& b)
{
    int tmp = a;
    a = b;
    b = tmp;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号