博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 引用
阅读量:5124 次
发布时间:2019-06-13

本文共 1058 字,大约阅读时间需要 3 分钟。

对于引用,网上很多说类似一个变量的别名,差不多就是这意思,引用和他绑定的那个变量 如果用取地址操作 给出的地址是一样的。 引用的创建不会占用空间

这个说法略不严谨.. 因为取地址相同所以说他不占空间。 在编译阶段好像把引用当成 const 指针来处理, 而且不同的编译器 可能还有些差别。(

(在哪看到过 关于 c++ 历史的,好像说 引用 这个概念 是在 指针 之后提出的 ,  不然 this 指针 就可能 会被改成引用)

 

1)创建引用是必须初始化的。因为 在引用 上 写出 初始化和赋值是一样形式的

1 int main()2 {3     int i  = 35;4     int & refI = i; // 初始化5     int j = 3;6     refI = j ; // 形式上和 初始化一样 但是 是 赋值 改变了i的值7     return 0;8 }

2)不能建立 引用的数组(如int& refArray[3];),至于为啥. 也不能给出个很实在的答案.. 有说 如果建立引用的数组则 & 会有二义性.. 没理解

但是 数组的引用可以

3) 引用的主要用途是 用在函数上。 函数参数 和 函数的 返回值 , 因为有值传递 不会修改源数据的 情况,通过引用传递可以直接修改源参数(换种理解 也就是 函数的参数不具备返回值的能力), 同时避免 值传递中的数据拷贝, 当参数占空间很大时 拷贝用的时间空间都很大

在使用引用时 要小心 引用的对象一定要存在。 典型的情况是 返回局部引用

1      int& func()2     {3         int i;4         return i; // 当函数退出时 i 已经没了5     }

4) 引用和const

int i = 35;    const int & refI = i;    refI++; //error  vs2012 提示 必须是可修改的左值  i++ 可以

5) 易忽视的  所以一般能加const 修饰 就尽量加

1 void func(string & s)2 {3 }4 int main()5 {6 func("Hello World"); // 这里是错误的 字符串 被系统默认为 const char[12] 7 return 0;8 }

6) 引用和多态

在学类的时候有多态这个概念

转载于:https://www.cnblogs.com/-Mohan/p/4285214.html

你可能感兴趣的文章
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>