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

C++重点内容 引用(1)(&)

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

C++重点内容 引用(1)(&)

6.1 引用概念 引用 不是新定义一个变量,而 是给已存在变量取了一个别名 ,注意:编译器不会为引用变量开辟内存空间,它和它 引用的变量共用同一块内存空间。 类型 & 引用变量名 ( 对象名 ) = 引用实体; 例如
void TestRef()
{
 int a = 10;
 int& ra = a;//<====定义引用类型
 
 printf("%pn", &a);
 printf("%pn", &ra);
}
6.2 引用特性(尤为注意) 1. 引用在 定义时必须初始化 2. 一个变量可以有多个引用 3. 引用一旦引用一个实体,再不能引用其他实体  
void TestRef()
{
 int a = 10;
 // int& ra; // 该条语句编译时会出错
 int& ra = a;
 int& rra = a;
 printf("%p %p %pn", &a, &ra, &rra); 
}
6.3 常引用 const int a;//把a变成常量
void TestConstRef()
{
 const int a = 10;
 //int& ra = a; // 该语句编译时会出错,a为常量
 const int& ra = a;
 // int& b = 10; // 该语句编译时会出错,b为常量
 const int& b = 10;
 double d = 12.34;
 //int& rd = d; // 该语句编译时会出错,类型不同
 const int& rd = d; }

因为引用的规律是:我变成你别名是有条件的:我用的可以缩小你的读写权限,但是不能放大你的权限;

常引用再函数定义时候的作用

1.减少空间占用,减少拷贝

2.可保护形参不会被改变

3.即可接收变量也可接收常量

如:

Add(20);

难点:

int i=10;

double d = i;

//double&r = i;        这段代码是错误的,因为这种类型转换的时候,系统是先给i拷贝到临时空间里面的,而临时空间又是具有常性的,所以这段代码就属于是放大了权限,而引用不能放大权限

const double&r = i;             //这段代码可以完美执行,并且可以验证临时空间具有常性,因为这段不报错

6.4 使用场景 1. 做参数
void Swap(int& left, int& right) {
 int temp = left;
 left = right;
 right = temp; }
2. 做返回值
int& Count()
{
 static int n = 0;
 n++;
 // ...
 return n; }
//下面代码输出是什么?
int& Add(int a, int b) {
 int c = a + b;
 return c; }
int main()
{
 int& ret = Add(1, 2);
 Add(3, 4);
 cout << "Add(1, 2) is :"<< ret < 
     

结果是7,解释在下一章

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

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

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