1. 程式人生 > >C++之返回值為reference引用的情況---補充(6)《Effective C++》

C++之返回值為reference引用的情況---補充(6)《Effective C++》

上篇部落格中我們講了返回一個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; };