新手入门:C++下的引用类型

2016-01-29 13:34 2 1 收藏

新手入门:C++下的引用类型,新手入门:C++下的引用类型

【 tulaoshi.com - ASP.NET 】

引用类型也称别名,它是个很有趣的东西。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。

  引用对象采用类型名加上&符号和名称的方式进行定义。例如:(int &test;),这里我们就定义了一个int类型的名为test 的引用,但是int &test;这样的方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test=变量名;)。

#include <iostream 
using namespace std; 
 
void main(void) 

 
int a=10; 
int &test=a; 
test=test+2; 
 
cout << &a << "|" << &test << "|" << a << "|" <<test << endl; 
 
cin.get(); 
}

  观察并编译运行上面的代码你会发现&a和&test的地址显示是相同的,a和test的值显示也是一样的!

  结合前一个教程的内容我们来说一下const引用的相关内容,这里要特别注意,和前一个教程一样带const修饰的引用同样也容易混淆概念!

  const修饰如果用在引用上会有一个特别之处,它的奥妙就在于可以进行不同类型的对象的初始化,而这一切在普通变量操作上是不可能的下面我们来看一个例子:

#include <iostream 
using namespace std; 
 
void main(void) 

 
int a=10; 
//double &test = a + 1.2f; //这句就是错误的! 
const double &test = a + 1.2f; 
 
cout << &a << "|" << &test << "|" << a << "|" <<test << endl; 
 
cin.get(); 
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

  上面的代码足够说明问题了,这就是const修饰带来的好处,但是聪明的人会在输出的时候发现一个问题,就是a和test的值的输出不同,按照最先说的道理应该可以改变a的值呀,为什么在这里却有没有能够改变呢?

  道理是这样的,const修饰过后的引用在编译器内部是这样进行变化的。

int a=10; 
const double &test = a + 1.2f;

  这样的一段代码在编译器认为却是下面的方式进行的

int a=10; 
int temp = a; 
const double &test = temp + 12.f

  这里其实是把a的值赋给了一个临时temp 变量而后test获得的却是temp+12.f 改变的是temp而不是a,所以就出现了a和test显示的值不同的情况,这里要特别注意,这是一个很容易混淆的地方,在编写程序的时候要特别仔细,以免出现了问题却检查不出为什么

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

来源:https://www.tulaoshi.com/n/20160129/1490698.html

延伸阅读
  堆内存是什么呢? 我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小, !-- frame contents -- !-- /frame contents -- 在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问...
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。 引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; :int a; int &ra=a; //定义引用ra,它是变量a...
     【IT168 专稿】Oracle是大中型企业、网站、公司、机构等使用的重量级的数据库。本篇给大家介绍其在Windows平台下的安装方法。     注意事项:     1、 本例以Oracle 8i R2 (8.1.6)版本为例。     2、 所有安装步骤为系统默认安装。     3、 安装之前请关...
01.分析以下程序的执行结果 #includeiostream.h void main() { int a; int &b=a; // 变量引用 b=10; cout"a="aendl; } 解: 本题说明变量引用的方法。b是a的引用,它们分配相同的空间,b的值即为a的值。 所以输出为 a=10。 注重:引用是引入了变量或对明的一个 义词...
const引用是指向const对象的引用。 代码如下: const int i = 10; const int &ref = i; 可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。 代码如下: int &ref1 = i; // error: nonconst reference to a const object 非const引用...

经验教程

22

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部