免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lipingtababa
打印 上一主题 下一主题

[C++] 你们的代码会用引用吗? [复制链接]

论坛徽章:
0
41 [报告]
发表于 2008-11-19 07:50 |只看该作者
原帖由 lipingtababa 于 2008-11-18 01:14 发表
我学习C++的时候,已经学习了C,对C的指针有些基本可用的理解,其程度相当于可以使用指针写代码,但不是很理解函数的参数传递机理.

那时候怎么也不明白为什么C++要引入引用,我坚持认为引用肯定有独特之处,之所以 ...


楼主说的也不无道理。我基本上用引用的场合只限于 const Type &object。
不过这个和 const Type *object 还是有区别的: 引用的对象不必判断是否是 NULL ,直接可以用,比较方便。

论坛徽章:
0
42 [报告]
发表于 2008-11-19 08:40 |只看该作者
原帖由 lipingtababa 于 2008-11-18 17:36 发表
请举例,请举例.

我举的例子里,都是指针比引用方便而且至关


这人很固执,FLW说的没错,你觉得指针比引用好用、方便,是因为你没有到时候,到火候。

论坛徽章:
0
43 [报告]
发表于 2008-11-19 08:49 |只看该作者
原帖由 nicozhou 于 2008-11-19 08:40 发表


这人很固执,FLW说的没错,你觉得指针比引用好用、方便,是因为你没有到时候,到火候。

不要轻易的说别人不到火候!
或许还有人说认为引用好的不到火候呢!

我刚开始用的是C,后来大多数用C++(6年)。
现在写新东西都用C(有2年了)。
我不想谈什么火候,只是自己感觉用什么方便就用什么!

[ 本帖最后由 guoruimin 于 2008-11-19 08:53 编辑 ]

论坛徽章:
0
44 [报告]
发表于 2008-11-19 09:09 |只看该作者
"
>>>> 我还见过类似 void fun(Type* & p)的代码,真是难看啊, void fun(Type ** pp)直接明了多了.
>>较之后者,我觉得前者的语义明确多了,不用象指针那样绕来绕去的。
"

-------晕了,你觉得Type* & p比Type ** pp好理解.我还真没想到过.不过多谢你的解答!也多谢各位的解答.

看来用不用引用主要是个风格问题,我在写自己写库的时候基本用指针,但是用STL的时候,就会用引用.

比如我会写 fun(std::map<int,string>& store),不会写成fun(std::map<int,string>* store).因为我觉得对一个不了解其实现的对象取指针有点忐忑.

论坛徽章:
0
45 [报告]
发表于 2008-11-19 09:20 |只看该作者
原帖由 nicozhou 于 2008-11-19 08:40 发表


这人很固执,FLW说的没错,你觉得指针比引用好用、方便,是因为你没有到时候,到火候。



-----这么说吧,我代码经验确实不多.但是我觉得论坛上,大家都是朋友,谁也不是谁的领导,没必要一副"我很拽,你们听我的没错,不听我的,你自己负责"的态度.别人不会把你当真的.

我还觉得,水平高的人跟水平差的人讨论问题,不耐烦那是正常的.我跟比我更次的菜鸟讲解的时候,也会不耐烦.

但是根本不讨论问题就过来牛逼哄哄的说"散开,散开,你们太菜了,这个问题还讨论,回去多谢代码就明白了".我觉得这人可能是天天被比自己菜的菜鸟追捧,被宠坏了,骄傲得已经不知道自己姓甚名谁了.

论坛徽章:
0
46 [报告]
发表于 2008-11-19 10:24 |只看该作者
原帖由 whyglinux 于 2008-11-18 23:31 发表
...
>> 我还见过类似 void fun(Type* & p)的代码,真是难看啊, void fun(Type ** pp)直接明了多了.

较之后者,我觉得前者的语义明确多了,不用象指针那样绕来绕去的。

...


朕认为 void fun(Type ** pp) 比  void fun(Type* & p) 更可读。

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
47 [报告]
发表于 2008-11-19 10:25 |只看该作者

回复 #1 lipingtababa 的帖子

没有引用就不能实现这个:

std::cout << " hello "  << std::endl;

论坛徽章:
0
48 [报告]
发表于 2008-11-19 10:30 |只看该作者
LZ是聪明的。引用是C++的鸟东西。

论坛徽章:
0
49 [报告]
发表于 2008-11-19 10:46 |只看该作者
原帖由 zhujiang73 于 2008-11-19 10:25 发表
没有引用就不能实现这个:

std::cout  




可以的,只要你定义操作符返回指针,那么可以这么写

(*(*(std::ccout<<"Hello, ")) << "World") << std::nl;

虽然丑了点.

或者编译器支持的话,可以这么写:

std::cout >> "hello "->>>"World"->>>std::nl.

>>可以定义成其它好看点的符号

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
50 [报告]
发表于 2008-11-19 10:49 |只看该作者
原帖由 lipingtababa 于 2008-11-19 10:46 发表

可以的,只要你定义操作符返回指针,那么可以这么写

(*(*(std::ccout>"World"->>>std::nl.

>>可以定义成其它好看点的符号

你在这里说的这个“指针”就是引用。“好看点的符号”就是 <<。
没必要自己骗自己吧。

引用本来就和指针有很多相像的地方,
面临指针存在的问题,
要么扩充指针的功能(Smart pointer),搞出许多和过去不兼容的做法。
要么新发明另一个概念来做这些(引用),让指针和过去完全兼容、
C++ 的发明者选择了后一种做法,你呢?你选择前一种?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP