引用的存在价值

实际上“引用”可以做的不论什么事情“指针”也都可以做。为什么还要“引用”这东西?

答:“用适当的工具做恰如其分的工作”

分析:

①一般而言,当你须要考虑“不指向不论什么对象”的可能性时,或者是考虑“在不同一时候间指向不同对象”的能力时,你就应该採用指针。 前一种情况能够将指针设置为 null。 后一种情况能够改变指针所指向的对象。

②而当你确定“总是会代表某个对象”。而且“一旦代表了该对象就不再可以改变”,那么就应该选引用。

③还有其他情况也须要使用引用,比方当你实现某些操作符的时候。

最常见的样例就是下标运算符operator[]。这个操作符非常特别地必须返回某种可以被当做赋值对象的东西:

vector<int> v(10);
v[5] = 10;
*v[5] = 10;

假设 operator[]返回的是指针。上面最后一个语句就必须写成这样子。这不是取下标操作符的自然直观的使用方式,所以,取下标操作符最好返回对象的引用。

时间: 2024-10-19 14:01:26

引用的存在价值的相关文章

Google C++ Coding Style:右值引用(Rvalue Reference)

右值引用是一个C++11特性,标记为T&&.GSG中定义:只为移动建构函数(Move constructor)和移动赋值操作(Move assignment)使用右值引用.并且不要使用std::Forward(提供的完美转发特性). C++中右值指表达式结束时就不再存的临时对象.在C++11中,右值分为纯右值(即原始字面量,表达式产生的临时变量等),以及一个将亡值(expiring value, 使用<<深入应用C++11>>中的译法,指的是与右值引用相关的表达式,

引用类型的本质

编译器是怎么实现引用类型的呢? 预备知识1:使用const定义常量 使用const可以采用类似定义变量的方法来定义常量,在定义的时候必须初始化以指明常量值.比如 const int a = 1; . 那么编译器会给const定义的常量分配内存空间吗?如果分配了内存空间,那么每次使用这个常量都要访问这个地址,空间效率暂且不论,时间效率不也被大大浪费?在这里可能一开始大家都会有这样的疑问.特别是单片机编程出身的我,在那个一无所知的时候觉得浪费效率简直浑身难受(单片机的计算能力非常有限). 先说是否给

搜索引擎网页排序算法

2.1基于词频统计——词位置加权的搜索引擎 利用关键词在文档中出现的频率和位置排序是搜索引擎最早期排序的主要思想,其技术发展也最为成熟,是第一阶段搜索引擎的主要排序技术,应用非常广泛,至今仍是许多搜索引擎的核心排序技术.其基本原理是:关键词在文档中词频越高,出现的位置越重要,则被认为和检索词的相关性越好. 1)词频统计 文档的词频是指查询关键词在文档中出现的频率.查询关键词词频在文档中出现的频率越高,其相关度越大.但当关键词为常用词时,使其对相关性判断的意义非常小.TF/IDF很好的解决了这个问

强、软、弱和虚引用的概念

本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用   在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用.图1为对象应用类层次. 图1 ⑴强引用(StrongReference)    强引用

java中四种引用类型(对象的强、软、弱和虚引用)

对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用. ⑴强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出O

C++引用与指针的区别

转!!!! http://blog.csdn.net/wangqiulin123456/article/details/8464418 虽然使用引用和指针都可以间接访问另一个值,但他们之间有两个重要区别: 引用总是指向某个对象,定义引用没有初始化是错误的. 赋值行为的差异,给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联.引用一经初始化,就始终指向同一个特定对象. ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★

Java 强引用、 软引用、 弱引用、虚引用

 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用.下图为对象应用类层次. ⑴强引用(StrongReference)   强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内

Android开发之图片处理专题(一):利用软引用构建图片高速缓存

在Android开发中,图片处理是一个难点.对于大量的图片处理,一不小心就会出现OOM的错误.那么,构建缓存,就是非常必要的一个手段.利用软引用构建缓存,只是其中步骤之一,我们来看看一般情况下,图篇处理的流程. 一般而言,图片的处理流程大致如上,之前所说的Xutils的原理,也如此.今天,我们就先讲讲如何利用软引用技术来构建高速缓存. 一.对象的四种引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态

Java -强引用&amp;弱引用

⑴强引用(StrongReference) 就是通过new得的对象引用 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题. 使用强引用的一个例子. 图像缓存问题,图像缓存应该阻止我们重新载入图像,所以图像缓存保存有内存中已有的所有图像的引用,如果使用通常的强引用,强引用本身会使得图像一直存留在内存中,这样就使得程序员像上面一样