游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1922|回复: 6

隐式转换

[复制链接]

17

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2007-5-30 16:56:00 | 显示全部楼层 |阅读模式
Hello:
比如有下面一段代码:

  1. class X
  2. {
  3. ...
  4. X(int);
  5. friend int f1(X&);
  6. friend int f2(const X&);
  7. friend int f3(X);
  8. };
  9. void h()
  10. {
  11. f1(99);//error
  12. f2(99);//ok
  13. f3(99);//ok
复制代码

书上说,隐式转换不会被用于非const的引用参数,那为什么f3就ok呢?
接着,说了一句:
由此可见,一个修改类对象状态的操作应该或者是一个成员,或者是一个带有非const引用参数(或非const指针参数)的全局函数

那“修改类对象状态的操作“应该怎么去理解呢?

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-5-30 19:45:00 | 显示全部楼层

Re:隐式转换

非const引用 == X& != X
X不是引用

接下来的话应该没有因果关系.

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-5-30 20:20:00 | 显示全部楼层

Re:隐式转换

f3(X) ... 这个不是引用……貌似

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2007-5-30 20:22:00 | 显示全部楼层

Re:隐式转换

类对象状态是否可以理解为对象类型的改变?
你看的书似乎说话很含糊。

17

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2007-5-30 20:40:00 | 显示全部楼层

Re: Re:隐式转换

xikema: Re:隐式转换

类对象状态是否可以理解为对象类型的改变?
你看的书似乎说话很含糊。

是哦, 感觉翻译的好差劲阿。
不过,还是谢谢楼上各位的帮忙哦

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-5-30 21:01:00 | 显示全部楼层

Re:隐式转换

你看的啥书呢,我看的都对友元以及全局函数评价不高,说,破坏了类的结构

8

主题

130

帖子

156

积分

注册会员

Rank: 2

积分
156
发表于 2007-6-1 16:04:00 | 显示全部楼层

Re:隐式转换

我一直还不知道f1是不行的。

不过说真的,隐式转换一般还是避开比较好。要不然,万一出错了,会以为莫明其妙的。而且,不知道内部存在隐式转换的,就更为难了。
stl的string有个c_str() const 而不用隐式。

关于友元,我一般也是不用,看起来很怪。不过,c++faq有个小讨论,楼上的可以去看看。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 06:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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