条款一:Distinguish between pointers and references

1.pointer既可以指向一个对象又可以指向NULL,但reference必须指向一个对象;

例如:char *p=NULL;//可以

           char &p=NULL;//错了

2,reference不用判断是否为空,但pointer要。

例如:void print(const int &p)

                   {cout<<p;}

           void print(const int *p)

                  {if(p) cout<<*p;}

3,pointer可以重新赋值,但reference总是指向最初获得那个对象。

例如:string s1("name1");

           string s2("name2");

           string &p1=s1;

           string *p2=&s1;

           p1=s2;//p1还是指向s1

           p2=&s2;//p2指向s2

4,最好总是令operator[]的返回值为reference

例如vector<int> v(10);

                           v[5]=10;

如果operator[]返回pointer,则上面的v[5]=10要学成*v[5]=10;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值