条款1:仔细区别Pointers和References

指针和引用看起来很不一样,指针使用*和->操作符,引用则使用.操作符,但是它们似乎做的是类似的事情。

首先,需求确认的是,C++用没有空引用(null reference),一个引用必须总代表某个对象,所以既不能指向null,也不能声明变量时不赋初值,也不能在使用过程中改变指向(其实用引用更贴切)值。如果不能满足上述条件,可以考虑使用指针。

使用引用可能比指针更富效率,因为引用不需要检查是否为空的情况。

还有一些情况需要使用引用,例如实现某些操作符的时候。最常见的情况就是[],这个操作符需要返回某种“能够被当做assignment赋值对象”的东西。

例如:vector<int> v(10);

v[5]=10;//这样是引用,如果是指针的话应该是*v[5]=10;

时间: 2024-10-19 23:36:05

条款1:仔细区别Pointers和References的相关文章

More Effective C++ 条款1 仔细区别pointers和references

1. 初始化的区别:有空指针(NULL),但没有空引用,和const变量一样,引用一旦定义就必须和对象绑定.(当然char* pc=0;char& rc=*pc;也合法但无意义) 由此造成的影响: 1) dynamic_cast,对于指针的down_cast,如果失败就返回空指针,但由于没有"空引用"的说法,所以对于引用的down_cast如果失败会抛出一个bad_cast异常. 2) 由于对于引用的使用不需要测试其有效性,而对于指针的使用往往要测试其是否为空. 2. 赋值的区

条款1. 仔细区别指针和引用

1)        没有NULL的references,因此引用reference被初始化. 2)        pointer可以设为NULL,也可以改变其指向. 3)        当你知道你需要指向某个东西,而且绝不会指向其他东西,或是当你实现一个操作符而其语法需求无法用pointers达成,则使用references,否则,请采用pointers.

EXW_FOB_CIF_CFR 外贸报价方式&amp;条款之间的区别与联系

一.工厂交货价(EXW=Ex Works): 交货地点:出口国工厂或仓库:  运 输:买方负责:  保 险:买方负责:  出口手续:买方负责:  进口手续:买方负责:  风险转移:交货地:  所有权转移:随买卖转移: 二.离岸价(FOB=Free on Borad):  交货地点:装运港:  运 输:买方负责:  保 险:买方负责:  出口手续:卖方负责:  进口手续:买方负责:  风险转移:装运港船舷:  所有权转移:随交单转移: 三.到岸价(成本+运费+保险费,CIF=Cost+Insura

《More Effective C++》读书笔记

http://www.cnblogs.com/tianyajuanke/archive/2012/11/29/2795131.html 一.基础议题(Basics) 1.仔细区别 pointers 和 references 当一定会指向某个对象,且不会改变指向时,就应该选择 references,其它任何时候,应该选择 pointers. 实现某一些操作符的时候,操作符由于语义要求使得指针不可行,这时就使用引用. 二者之间的区别是:在任何情况下都不能用指向空值的引用,而指针则可以:指针可以被重新

《More Effective C++》重点摘要一:基础议题

仔细区别pointers和references.指针和引用有些相似,他们本身都是对存在于某个地方的对象(不是指class)的指示,但是他们有着本质的区别.指针变量存储所指对象的地址,所指的对象可以是null,只要可以寻址就行.而引用是某个已经存在对象的别名,所以不可以先声明一个引用,经过一段时间(代码)后让它指向某个对象. 最好使用C++转型操作符.C++提供了自己的四种转型操作符: 1) static_cast.拥有与C旧式转型相同的意义与限制,但不能移除表达式的常量性,因为有const_ca

C++学习书籍推荐《More Effective C++》下载

百度云及其他网盘下载地址:点我 编辑推荐 <More Effective C++:35个改善编程与设计的有效方法(中文版)>:传世经典书丛 媒体推荐 <Effective c++>(Scott Meyers第一本书)的荣耀:"对于任何渴望在中阶或高阶层面精通c++的人,我慎重推荐<Effective c++>," --(The C/C++User's Journal) 作者简介 作者:(美国)梅耶(Scott Meyers) 译者:侯捷 Scott

More Effective C++读书小记

1.仔细区别pointer和references 不论pointer或是references都使你间接参考其它对象. 没有所谓的null reference.一个reference必须总代表某个对象. 如果你有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表)任何对象,那么你应该使用pointer,因为你可以将指针设为null.换个角度,如果这个变量总是代表一个对象,也就是说你的设计并不允许这个变量为null,那么你应该使用reference. 由于reference一定

More Effective C++ - 章节一 : 基础议题

1. 仔细区分 pointers 和 references references和pointers的差别描述如下: pointer:当需要考虑"不指向任何对象"时,或者是考虑"在不同时间指向不同对象"的能力时,应该采用pointer.前一种情况可以将pointer设为null,后一种可以改变pointer所指对象. reference:当确定"总是会代表某个对象",而且"一旦代表了该对象就不能再改变",那应该使用referen

《Effective C++》:条款31:将文件间的编译依存关系降至最低

假如你在修改程序,只是修改了某个class的接口的实现,而且修改的是private部分.之后,你编译时,发现好多文件都被重新编译了.这种问题的发生,在于没有把"将接口从实现中分离".Class的定义不只是详细叙述class接口,还包括许多实现细目: class Person{ public: Person(const std::string& name, const Date& birthday, const Address& addr); std::strin