免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2008-11-28 20:18 |显示全部楼层
原帖由 思一克 于 2008-11-28 16:06 发表
从计算机体系结构层面讲,
可以传递的只有"值"和"地址".

引用是编译层面做的一个给编程序人的一个"假象".
实际上可以做的这样的"假象"是很多的.
比如:
func(i),
编译可以将i放到一个什么(比如A)里面, 然 ...


“假象”这种说法确实是引用和指针的关系,但引用的这种“假象”又怎么会迷惑编程者呢?他是给编程者一个更为抽象的视图,还是我前面说过的“让类型成为程序中的原子”;
指针是赤裸裸的,它让你可以剥开一个类型的外衣看看它的内部,可它又不知道这个类型的内部组织结构,它认为他们都是顺序的字节块,于是随便的拿几个出去用(肯定可以这么做,因为指针可以任意的转换,那它指向的块的大小就可以变了,随意找些位置拿来用用,都是合理的)。

至于引用在编译后变成什么样,那是用户透明的,良好的实现应该是编译器去关心。
还是忍不住举个例子:
class a {
private:
int a;
int b;
public:
a(void);
char getAChar(void *b);
};

a *testa = new a();
char *b = (char *)testa;
.
.
.      (若干代码之后)
.
printf("%s", b++);                 这会是什么,只有老天爷知道,可是指针让这么做;引用,没这个问题

论坛徽章:
0
12 [报告]
发表于 2008-11-28 20:30 |显示全部楼层

回复 #149 cbvxvx 的帖子

对啊,你说的情况我说啦。
这种方式不就也和引用是否修改值的接口方式一样了吗?
fun(const &结构体变量)

明确声明是否更改传入参数,这才是好的接口

另:“BTW: 如果这你都不知道, C语言你学得不乍地呀.”,怎么又人身攻击?这样讨论问题不好吧

论坛徽章:
0
13 [报告]
发表于 2008-11-28 20:50 |显示全部楼层

回复 #151 cbvxvx 的帖子

不修改的全声明为fun(const &), 可能修改的再声明成fun(&),你说的问题又何在?
至于跑去看接口,天哪,总不能不知道接口怎么定义的吧,那怎么用啊?

论坛徽章:
0
14 [报告]
发表于 2008-11-28 21:05 |显示全部楼层

回复 #153 cbvxvx 的帖子

”不修改的全声明为fun(const &), 可能修改的再声明成fun(&)“
你是说这种形式不可读吗?

论坛徽章:
0
15 [报告]
发表于 2008-11-28 21:19 |显示全部楼层
原帖由 cbvxvx 于 2008-11-28 21:12 发表


看调用这个函数的语句时有P颠问题, 你不会还没明白143楼我说的意思吧.

调用一个函数前,看看接口怎么声明的,这也算P颠问题?!那用printf前要知道printf怎么声明的算不算屁颠问题?

论坛徽章:
0
16 [报告]
发表于 2008-11-28 21:29 |显示全部楼层

回复 #157 cbvxvx 的帖子

可你也要去看printf怎么声明的呀,就像你要看有引用类型参数的函数声明一样呀(看完声明就知道该参数有没有在函数内被修改)。

论坛徽章:
0
17 [报告]
发表于 2008-11-28 21:54 |显示全部楼层
原帖由 cbvxvx 于 2008-11-28 21:41 发表


用引用, 函数调用与函数原型会出现一对二的关系, 如:
fun(n) 对 fun(int n) 和 fun(int& n)

printf函数会出现这样的情况么?


你说的这种情况好像不行,只有明确在声明中为引用的参数,才能对应实现中的引用参数:
fun(n) 只能对对 fun(int n) , 而fun(int& n)才对应 fun(int& n)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP