C++之返回值为reference引用的情况---补充(6)《Effective C++》

来源:互联网 发布:淘宝美德威萨克斯 编辑:程序博客网 时间:2024/06/02 04:50

上篇博客中我们讲了返回一个reference对象可能会出错或者效率特别低,那有没有比较适合返回reference引用的情况呢?下面我们就来总结一下类型:
1)函数返回值用引用,参数传递进去也用引用:

int& hel(int& t){    return t;}

2)函数返回值用引用,参数传递用指针

int& hel(int *t){    return *t;}

3)返回函数内部的数据:

  • copy assignment运算符
class A{public:    A(int xx) :x(xx){    }    A(){    }    int getX() const{        return x;    };    void show(){        cout << x << endl;    }    A(const A&a){        this->x = a.x;    }    A& operator=(const A& a){        this->x = a.x;        return *this;    }private:    int x;};
  • 内部数据
class Point{public:    Point(int x,int y);    ...    void setX(int newVal);    void setY(int newVal);    ...};struct RectData{    Point ulhc;    Point lrhc;};class Rectangle{public:    ...    Point& upperLeft()const     {    return pData->ulhc;    }    Point& lowerRight()const{    return pData->lrhc;    }private:    Rectangle pData;};

上述两种情况比较适合返回引用,效率比返回对象效率高!
参考博客:http://www.cnblogs.com/lionfight/archive/2012/07/22/2603865.html

阅读全文
0 0