为了账号安全,请及时绑定邮箱和手机立即绑定

返回类型问题

请问什么时候应该返回对象什么时候应该返回&,这个特别困惑,有大神知道吗?求解答

正在回答

1 回答

操作符运算就是调用函数运算 例: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


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

返回类型问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信