操作符重载:什么时候返回引用

原创 2015年07月10日 20:31:50

返回一个已经存在的对象或者变量时最好返回一个引用(可以避免返回值做左值时的一些麻烦,以及不用生成匿名变量,可以节约资源,提高效率。),如:

Complex & operator++(Complex & c)
{
                 c .a ++;
                 c .b ++;
                 return c ;
}

返回一个临时变量时,那么不要返回引用(否则容易出现很多问题),如:

Complex operator++(Complex & c, int )
{
                 Complex tmp = c ;
                 c .a ++;
                 c .b ++;
                 return tmp ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

赋值运算符重载函数 返回引用和返回对象的区别

赋值重载符的定义 返回引用和返回对象的区别#include "stdafx.h" #include using namespace std;class CStudent { public: C...
  • miyunhong
  • miyunhong
  • 2016年04月14日 10:19
  • 1364

C++运算符重载,+-*/的重载,返回值为什么是对象而不是对象的引用?而流操作符<< 和 >> 却返回的是引用?

 原因是: +,-,*等返回不了引用,比如+运算符,可以如下重载(为了简单,假设A 只有int x;int y) A operator+(A a,A b) {A sum;   sum...
  • csdnxq
  • csdnxq
  • 2015年05月02日 21:38
  • 1134

赋值运算符重载为什么要返回引用

一、c/c++赋值运算符的本意为“返回左值的引用”(左值:赋值号左面的变量而非其值) 例: int a, b = 3, c = 2;     (a = b) = c;      cou...
  • murongjianke001
  • murongjianke001
  • 2014年09月09日 08:42
  • 1157

C++ 操作符重载(3) 什么时候需要自定义赋值操作符

先来看这么一个例子 class Test { private: int *ptr; public: Test(int i = 0) { ptr = new int(i); //构造函数...
  • alex1997222
  • alex1997222
  • 2017年11月18日 23:31
  • 32

友元函数实现左移右移操作符重载(函数返回值当左值需返回引用)(进阶2)

cout 的 #include using namespace std; class Complex{//复数类 private: int a; int b; frie...
  • x_y_q_
  • x_y_q_
  • 2016年08月16日 10:48
  • 486

一段代码引发的思考-----(类及操作符重载,数组相加)

平时照着书上敲代码,没有发现什么错误,最多是自己失误把字母敲错了,可是轮到自己写代码时,出现了一大堆错误,错误五花八门,但是主要还是对知识概念不熟造成的,学习编程语言的时候还是要多做练习,光敲书上的例...
  • maochencw
  • maochencw
  • 2011年12月26日 16:28
  • 540

CPP(四)理解操作符重载:进阶

操作符重载函数的格式是怎么的呢?
  • iamagoodguy254
  • iamagoodguy254
  • 2014年06月04日 12:31
  • 460

CPP(三)理解操作符重载:初步

在C++中我们将操作符也看做函数。例如,重载操作符 + 时
  • iamagoodguy254
  • iamagoodguy254
  • 2014年06月04日 11:07
  • 450

C++运算符重载(3) - 什么时候需要自定义赋值操作符

答案与拷贝构造函数一样。如果一个类不包含指针,则不需要自定义赋值操作符与拷贝构造函数。编译器会给每个类创建一个默认的拷贝构造函数和默认的赋值操作符。但是,当类中包含有指针或任何运行时分配的资源时,编译...
  • shltsh
  • shltsh
  • 2015年05月26日 09:32
  • 1067

返回一个临时变量的右值引用,那么临时对象什么时候释放?

最近在研究右值引用的时候碰到这个问题,还没有解决,将问题贴在这里,待更新: const int* printAddress(const int & v) { cout ...
  • qq100440110
  • qq100440110
  • 2016年04月23日 13:23
  • 1013
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:操作符重载:什么时候返回引用
举报原因:
原因补充:

(最多只允许输入30个字)