条款一:仔细区别pointers 和 reference

1.一个reference必须总代表某个对象,没有所谓的null reference.如果你有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表)另一个对象,那么应该使用pointer,因为你可以将pointer设为null.由于reference一定得代表某个对象,c++要求reference必须有初值。

string& rs;//错误,引用必须被初始化
string s("xyz");
string& rs = s;//正确

2.pointers可以被重新赋值,指向另一个对象,reference却总是指向(代表)它最初获得的那个对象

string s1("nancy");
string s2("clancy");

string& rs = s1;
string *ps = &s1;
rs = s2;//rs仍然代表s1,只是s1的值变为和s2一样
ps = &s2;//s1不受影响

3.当实现某些操作符时,必须要使用reference,比如operator[].这个操作符必须返回某种能够被当作赋值对象的东西:

    vector<int> v(10);
    v[5] = 20;
    //如果operator []返回的是pointer,则要写成下面的样子:
    *v[5] = 20;//这会误解为v是个以指针形成的vector

 

转载于:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/5230828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值