C++中为什么重载前置++运算符要加个&?
答案:4 悬赏:0 手机版
解决时间 2021-04-07 04:07
- 提问者网友:练爱
- 2021-04-06 16:41
C++中为什么重载前置++运算符要加个&?
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-04-06 17:44
1、因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。
举个例:
cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<
2、引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名。
举个例:
cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<
2、引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名。
全部回答
- 1楼网友:封刀令
- 2021-04-06 20:19
& 代表引用,形参是引用(非const型)时,就是将该对象自己传递进函数了返回值是&时用在运算符的返回值是左值时,常用有这几个:所有的赋值(包括复合赋值),前缀自加自减,下标运算符
- 2楼网友:蕴藏春秋
- 2021-04-06 20:14
这里返回对象的引用, 可以连续使用。
举个例子 cout<<是我们经常用的吧
其实是重载了<<这个操作符。
如果不返回引用
cout<如果返回自身的引用 cout<就是这个意思吧。好多重载操作符,作用其实都是这样的。
还有 "="的重载
返回引用的目的 显然就是 方便写成 a = b = c;
为什么可以这样 其实是a = (b = c);
b=c返回的是b的引用,然后再继续 a = b ;如果不反回自身的引用,显然就不行了!
举个例子 cout<<是我们经常用的吧
其实是重载了<<这个操作符。
如果不返回引用
cout<如果返回自身的引用 cout<就是这个意思吧。好多重载操作符,作用其实都是这样的。
还有 "="的重载
返回引用的目的 显然就是 方便写成 a = b = c;
为什么可以这样 其实是a = (b = c);
b=c返回的是b的引用,然后再继续 a = b ;如果不反回自身的引用,显然就不行了!
- 3楼网友:狂恋
- 2021-04-06 18:36
Complex& Complex::operator++() // 返回一个引用即代表当前对象本身
{
++real;
return *this; // 返回当前对象(立即可体现出来前置++的值)
}
Complex Complex::operator++(int)
{
return Complex(real++, image); // 这里只是返回一个对象的副本。不能体现real++后的值(因为是后置++),所以后置++只能先取值。然后再++
}追问可是为什么要用返回引用呢?写成Complex Complex::operator++()不行吗?追答你的前置++可以写成与后置++一样,只不过是使用引用类型,可以减少内存使用,比如你使用返回引用类型,那么它依然还是当前对象,并没有重新构造一个对象。你可以留意你的后置++返回的类型,实质上它在返回前是执行了一次构造函数,和复制构造函数的。
{
++real;
return *this; // 返回当前对象(立即可体现出来前置++的值)
}
Complex Complex::operator++(int)
{
return Complex(real++, image); // 这里只是返回一个对象的副本。不能体现real++后的值(因为是后置++),所以后置++只能先取值。然后再++
}追问可是为什么要用返回引用呢?写成Complex Complex::operator++()不行吗?追答你的前置++可以写成与后置++一样,只不过是使用引用类型,可以减少内存使用,比如你使用返回引用类型,那么它依然还是当前对象,并没有重新构造一个对象。你可以留意你的后置++返回的类型,实质上它在返回前是执行了一次构造函数,和复制构造函数的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯