上篇博客中我们讲了返回一个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