C++下的引用类型
来源:互联网 发布:中国软件外包公司 编辑:程序博客网 时间:2024/06/13 01:58
什么是引用?
引用类型也称 别名,这样说就比较好理解了吧,他是一个比较有意思的东西。
在C++中你可以把它看做是另外的一种指针,通过引用类型,我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。引用对象采用类型名加上&符号,和名称的方式定义。例如:(int &test;),这里我们就定义了一个名为test的引用,但是int &test;这样的定义方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test = 变量名;)
#include <iostream>using namespace std;int main() {int a = 10;int &test = a;test = test+2;cout<<&a<<"|"<<&test<<"|"<<a<<"|"<<test<<endl;cin.get();}
观察并编译运行上面的代码,你会发现&a和&test的地址是相同的,a和test的值显示也是一样的。
结合const来说:const修饰如果在引用上会有一个特别之处,它的奥秘就在于可以进行不同类型的对象的初始化,而这一切在普通变量的操作上是不可能实现的。
#include <iostream>using namespace std;int main() {int a = 10;const double &test = a + 1.2f;cout << &a << "|" << &test << "|" <<a <<"|"<< test << endl;cin.get();}
这里如果去掉 const 是会报错的。
这里就实现了用int给double赋值的功能。
道理是这样的,const修饰过后的引用在编译器内部是这样变化的:
int a = 10;
const double &test = a+1.2f;
这样一段代码在编译器认为却是这样工作的:
int a = 10;
int temp = a;
const double &test = temp + 1.2f;
这里其实是把a的值付给了一个临时变量,而后test 获得的却是temp+1.2f改变的是temp而不是a,所以出现了a和test显示的值是不一样的。
- C++下的引用类型
- C++下的引用类型
- C#string 的引用类型问题
- C++_引用类型
- C#_引用类型
- [C#] 值类型与引用类型的区别?
- [C#] 值类型与引用类型的区别?
- c++引用类型和指针类型的区别
- 值类型与引用类型的区别(基于C#)
- c++下引用类型
- 值类型与引用类型下的输入实例对比
- C++/CLI中的引用类型
- 【引用】C中的类型转换
- 【C#】List列表的深复制,引用类型深复制
- 返回引用类型的函数指针(c++)
- C# 值类型与引用类型
- 【C#】值类型和引用类型
- 值类型与引用类型(C#)
- android dhcp
- java nio 拆分大文件
- C++中的头文件和源文件
- Could not decode attr value
- online tools
- C++下的引用类型
- socket并发处理(其他地方看到的,分享给大家)
- C/C++中static关键字详解
- (转)【Android游戏开发之四】Android 游戏框架(一个游戏角色在屏幕行走的demo)
- Linux下Nagios的安装与配置
- android命令行下使用sqlite3
- AS3 的逻辑右移与算术右移
- python: excel转sqlite
- linux分析日志文件