【c++】引用

来源:互联网 发布:python yield 用法 编辑:程序博客网 时间:2024/04/30 06:24

C++中引用表示对象的别名,通过在变量名前加入“&”符号表示,实际引用中,引用主要用于函数参数的形参。
1、引用是别名,所有作用在引用上的操作实际都作用在引用的对象上。

int a = 0;int &b = a;//b为a的别名b = 3;cout << a << endl;//此时输出a = 3

2、引用必须初始化,表明指向那个对象,且非const引用必须以对象来初始化
const对象必须以const引用,因为const不可修改,若以非const引用,则通过修改非const引用即可修改对象值,这是不允许的。

const int a = 3;const int &b = a;

3、const引用可以初始化为不同类型的对象或初始化为右值,但是非const引用不可以

double a = 1.1;const int &b = a;//以不同类型初始化const引用合法,非const引用则不合法const int &c = 2;//以右值来初始化也是合法的,非const引用同样不合法

至于为什么const引用可以初始化为不同类型,原因如下,编译器对上述代码转换为如下形式:

int temp = a;const int &b = temp;//也就是b引用的并不是a,而是临时变量temp

所以修改a的值并不会改变b的值

int a = 1;const int b = &a;a = 3;cout << b <<endl;//此时b = 3

这里可能会有疑问,b是const的按道理不能修改,为什么值变了,原因是const b只是说不能通过b来修改a,但是a是非const的,所以可以任意修改,而b指向的是对象a,所以a变了,b自然变了。
这里就要说了,其实给变量弄个别名意义不大,主要还是用来作为函数传参的,因为直接进行fun(int a, int b)的参数传递,为值传递(传输的是原来参数的拷贝),虽然不改变原参数的值,但是消耗更多空间。
而如果用引用fun(int &a, int &b)则直接传递原来的参数的地址,可以改变元参数的值,减少消耗,如果不想对原参数a,b修改,可以设为const,fun(const int &a, int &b)即可。这样在函数fun中只能对a进行读取而不能修改。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机帐号被锁定怎么办 苹果手机帐号锁定了怎么办 微博帐号被锁定怎么办 微博显示帐号被锁定怎么办 uc屏蔽了一个网站怎么办 uu跑腿送货遇到不方便收货怎么办 雷神加速器忘记暂停怎么办 obs直播开摄像头吃鸡掉帧怎么办 陌陌收到的礼物怎么办 吃了油腻的东西恶心怎么办 主播工资不发怎么办 主播工资被欠怎么办 直播平台不发工资坑主播怎么办 主播公司不发工资怎么办 梦幻月卡用完了怎么办 网易星球实名认证通过不了怎么办 认证过荔枝主播怎么办 苹果手机相机不对焦怎么办 苹果手机摄像头不能对焦了怎么办 闪电邮里面邮件太多怎么办 苹果手机和助理打不开怎么办 苹果我的世界打不开怎么办 ps试用7天到期了怎么办 皮肤锁不住水份怎么办 硫酸弄到皮肤上怎么办 直播时图像反看怎么办 快手直播权限被收回怎么办 快手直播权限被收回了怎么办 腾讯手游助手玩游戏卡怎么办 电脑直播视频打不开了怎么办 平板进水开不了机怎么办 苹果平板进水开不了机怎么办 苹果平板电脑进水了怎么办 电脑换主机以前的文件怎么办 货车卖了没过户怎么办 微交易出金不了怎么办 直播时出现央视影音客户端怎么办 qq账号暂时无法登录怎么办 饿了吃东西胃疼怎么办 早上不吃饭胃疼怎么办 孕晚期胃疼呕吐怎么办