返回类型问题
请问什么时候应该返回对象什么时候应该返回&,这个特别困惑,有大神知道吗?求解答
请问什么时候应该返回对象什么时候应该返回&,这个特别困惑,有大神知道吗?求解答
2015-11-25
操作符运算就是调用函数运算 例:a+b就是operator+(a,b) 然后在返回的数据上继续运算 根据这个来决定返回类型 只要系统没有限制你修改 你就可以根据实际使用情况决定
例:前置++ 返回的就是引用 后置就是对象 因为后置++的值在函数体内已经改变 返回原对象的引用 那么参与运算的就是自加后的状态 违背了大家对后置++功能的共识
3.还有一点就是返回引用比对象效率高多了 当功能一样时 我们通常用引用不用对象 看下面代码 很多程序员能用前置不用后置 就是为了防止使用临时对象 如果遇到构造析构消耗比较大的对象时 效率可是相差很大的
#include <iostream>//mooc提交用
using namespace std;//mooc提交用
class A{
public:
A(){cout<<"A()"<<endl;}
A(const A&){cout<<"const A(&)"<<endl;}
~A(){cout<<"~A"<<endl;}
A operator++(int){
A temp(*this);
cout<<"A+=1的代码"<<endl;
return temp;
}
A& operator++(){
cout<<"A+=1的代码"<<endl;
return *this;
}
};
int main(int argc, const char * argv[] )
{//---------------main--------------
A a;
cout<<"------a++-----"<<endl;
for (int i=0;i!=2; i++,a++) {}
cout<<"------++a-----"<<endl;
for (int i=0;i!=2;++i,++a) {}
cout<<"------end-----"<<endl;
//---------------main--------------
return 0;
}输出结果
A() ------a++----- const A(&) A+=1的代码 ~A const A(&) A+=1的代码 ~A ------++a----- A+=1的代码 A+=1的代码 ------end----- ~A
举报