zoukankan      html  css  js  c++  java
  • 条款一:仔细区别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
  • 相关阅读:
    大于00
    today
    10
    面试题flask
    开发者日志
    7月22日一天学的东西
    资料
    3333
    2222
    1
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/5230828.html
Copyright © 2011-2022 走看看