游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5989|回复: 10

为什么一般重载=运算符的参数和返回值都是引用?

[复制链接]

9

主题

22

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2010-4-23 21:28:00 | 显示全部楼层 |阅读模式
如题,好像一般都要用引用传递参数和返回值.
是不是牵扯到拷贝函数的问题,希望到手帮我解析下!
谢谢!!

9

主题

22

帖子

22

积分

注册会员

Rank: 2

积分
22
 楼主| 发表于 2010-4-23 21:28:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

先顶下自己

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-4-23 23:52:00 | 显示全部楼层

Re: 为什么一般重载=运算符的参数和返回值都是引用?

WL07: 为什么一般重载=运算符的参数和返回值都是引用?

如题,好像一般都要用引用传递参数和返回值.
是不是牵扯到拷贝函数的问题,希望到手帮我解析下!
谢谢!!


主要是针对非基本类型(自定义的结构体,类)的效率。
传参时编译器会构造临时变量,这里就会拷贝变量的内容。而引用和指针一样,是传的地址(32位机上是四字节),会比拷贝非基本类型效率高得多。
返回值同理。
建议你去看看Effective C++。

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2010-4-27 11:54:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

你不返回引用,那么,是返回的void呢? 还是直接返回类呢?

直接返回类 会有构造临时变量的效率问题
而返回void则不能实现 连续= 即 A = B =C;

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-7-21 10:43:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

这就好像返回一个类对象和一个类对象指针的道理一样,如果类的成员函数很多。如果返回类对象的话,传输的数据量很多。如果只返回指针的话效率很高。因为,指针只有4个字节,或者引用直接返回对象不进行拷贝构造。不产生临时变量。

3

主题

263

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2010-7-21 21:16:00 | 显示全部楼层

Re: Re:为什么一般重载=运算符的参数和返回值都是引用?

onemoo: Re:为什么一般重载=运算符的参数和返回值都是引用?

你不返回引用,那么,是返回的void呢? 还是直接返回类呢?

直接返回类 会有构造临时变量的效率问题
而返回void则不能实现 连续= 即 A = B =C;

同上,顶~

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2010-7-22 17:37:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-7-24 09:40:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

看一下 C++思想编程这本书的第9章

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2010-8-19 14:14:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

一般返回的不仅是引用,而且是常量引用,好处是为了实现A = B =C这样的连续赋值,因为它是右结合的。
不足就是有时返回的东西并没有用处,但还是返回了,占用了一些代码资源。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-10-14 11:06:00 | 显示全部楼层

Re:为什么一般重载=运算符的参数和返回值都是引用?

4楼和5楼 言之有理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-3 07:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表