快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

引用类型也称别名,它是个很有趣的东西。在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(); 
}

  上面的代码足够说明问题了,这就是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显示的值不同的情况,这里要特殊注重,这是一个很轻易混淆的地方,在编写程序的时候要特殊仔细,以免出现了问题却检查不出为什么


返回类别: 教程
上一教程: 安全第一:.NET加密技术指南(2)
下一教程: ASP.NET中上传下载文件

您可以阅读与"新手入门:C++下的引用类型"相关的教程:
· .NET框架程序设计读书笔记(三)--.net框架类库(FCL)和通用类型系统、代码互操作
· 检测客户端显示器分辨率、浏览器类型和客户端IP
· .net入门常见问题
· .NET中的特别类型成员----微软 .NET平台系列文章之三(译文/赵湘宁)
· .NET之ASP Web Form迅速入门(3)
    微笑服务 优质保证 索取样品