C++返回引用及函数重载:

两个函数:
int& func();
int func()const;
如何调用第2个函数呢?

函数后面带const说明该方法不会修改对象内部数据,这种写法只有类的方法才行,全局函数不存在这种写法,也不会有这种问题.
class A
{
int& fun (); //1
int fun() const; //2
}
A val;
val.fun(); // 调用1
(const A&)val.fun(); //强制调用2
const A valConst;
valConst.fun(); // 调用2,因为对象本身是常量,所以只会调用常量方法(后面带const的方法)
此外,申明为const的方法内部也只能调用声明为const的本类方法.
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-04
你先搞清什么是返回引用。以及重载函数。

C++返回引用及函数重载:
const A valConst;valConst.fun(); \/\/ 调用2,因为对象本身是常量,所以只会调用常量方法(后面带const的方法)此外,申明为const的方法内部也只能调用声明为const的本类方法.

C++重载=,+=等时候为什么要用返回引用
以ostream为例,重载函数处理的参数是调用调重载运算符的左操作数,比如 cout << a << b;\/\/ int a,b;为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是系统托管的。如果不返回引用,后面对流的操作就是无效的了,因为你返回的只是某时...

C++运算符重载,+-*\/的重载,返回值为什么是对象而不是对象的引用?而流操...
分析不能用引用的原因: 函数传入了两个参数a,b,并且+只能传入两个参数(c++不允许自己创造运算符),这样就限定了和sum不能作为参数传入,所以sum只能是一个函数里的临时变量,但是临时变量在函数结束时是要销毁的,那么函数调用玩,sum就没有了, 如果返回引用,引用源都已经没有了,还怎么引用,...

c++中重载输出操作符,为什么要返回引用
1.第一个形参为对ostream对象的引用,在该对象上将产生输出,ostream为非const,因为写入到流会改变流的状态;该形参是一个引用,因为不能复制ostream对象(在c++中定义的标准输入输出流类istream和ostream,其中拷贝构造函数和赋值操作符函数都被放置在了private部分,且只有声明,没有定义)。2.第二个形...

在C++中运算符重载的时候究竟什么时候应该加引用,什么时候不应该加引...
如果返回值会被赋值,就必须返回引用,例如=重载\\x0d\\x0a如果返回值是一个局部变量,就一定不能返回引用,例如+重载\\x0d\\x0a如果为了提高效率,参数可以使用引用,\\x0d\\x0a而[]的实际参数经常是一个常量,常量你是无法引用,所以不能用引用作为[]的参数。

C++中返回引用有什么用途
C++中当返回一个大型的类对象时,省去了按值传递返回的拷贝过程,可以提高效率,在运算符重载时,返回一个引用类对象可以实现运算符的连运算,比如定义一个类A,定义类A的四个对象,a,b,c,d当重载+号运算符时,返回一个引用可以实现a=b+c+d;等等,返回一个引用应注意,不能返回一个局部变量......

C++ 为了实现链式赋值 a=b=c;为什么需要符号重载函数返回引用
...return *this;} } 在执行的时候是:YourClass a,b;\/\/...初始化 a,b a+=b;符号运算的过程就相当于一个函数的调用,过程相当于a=(a.+=(b)),就是要保证符号重载函数调用者与调用完之后的那个返回变量指向同一块地址,即谁操作了重载函数,返回的还是它自身(同一块地址,没有另外...

c++返回引用的问题
对于函数的返回值,如果不是引用,那么只是暂时性的,举个例子,一个函数返回了一个int变量,那么当这个变量返回给外部使用后,这个变量的内存就立刻被系统回收了,也就是说这个值再也不存在了。如果返回一个类的对象的话,建议还是把返回值写成引用的形式,这样做有两个好处,第一个是保证了返回的类...

C++中为什么重载前置++运算符要加个&?
就是这个意思吧。好多重载操作符,作用其实都是这样的。2、引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名。

c++中重载输出流对象,为什么要返回引用
为了实现stream << a << b形式的级联调用,(stream << a) 返回stream本身,所以后面的<

相似回答
大家正在搜