Chinaunix首页 | 论坛 | 博客
  • 博客访问: 325701
  • 博文数量: 63
  • 博客积分: 2344
  • 博客等级: 大尉
  • 技术积分: 628
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-13 11:09
个人简介

有一种沉默叫霸气,有一种内敛叫个性,有一种简单叫深遂,有一种不屑叫自我

文章分类

全部博文(63)

文章存档

2013年(10)

2012年(12)

2011年(1)

2010年(9)

2009年(31)

分类: C/C++

2009-07-24 10:29:52

一、 定义
    某个目标变量的“别名”(alias)
    int a  = 80;
    int &pa = a;
    常引用: const 类型标识符 &引用名 = 目标变量名;
            int a;
            const int &ra = a;
            ra = 1;    //错误
            a = 1;     //正确
    将引用作为函数的返回值类型:
       格式:类型标识符 &函数名(形参列表及类型说明){}
 
二、使用应用时的注意事项:
1. 申明应用时一定要初始化,申明后不能把引用名作为其他变量的别名
2. 不能建立数组的引用
3. 引用型参数在能被定义为const的情况下,尽量定义为const
4. 引用作为函数返回值时,不能返回局部变量的引用;不能返回函数内部new分配的内存引用(返回的引用只是作为临时变量而没有赋值,那么这个引用所指的空间(由new分配)无法释放,造成memory leak)
5. 流操作返回值用引用
6. 一些操作符不能返回引用:+-*/四则运算符(没有side effect,必须构造一个对象作为返回值)
7. 引用是除指针外另一个可以产生多态效果的手段

三、特点:
1. 只是目标变量的一个别名,不是一种数据类型,不占用存储单元。
2. 作为函数参数时,
   a. 传递引用与传递指针的效果是一样的,但是指针传递依然需要分配存储单元;
   b. 被调函数的形参成为主调函数的实参变量或对象的一个别名;
   c. 引用传参时,在内存中没有产生实参的副本,效率和所占空间都比一般变量传递参数好;(使用一般变量传递函数参数,当发生函数调用时,需要给形参分配存储单元,形参是实参变量的副本。如果传递的是对象,还将调用拷贝构造函数)
3. 作为函数返回值:
   a. 不产生被返回值的副本(返回局部变量的引用,产生runtime error!);
   b. 可以返回类成员的引用,最好是const(引用只是一个变量,类成员与具体对象相关)
阅读(804) | 评论(0) | 转发(0) |
0

上一篇:linux基础知识点

下一篇:find/grep使用

给主人留下些什么吧!~~