免费注册 查看新帖 |

Chinaunix

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

[C++] C++的引用的传递和返回兼批判 [复制链接]

论坛徽章:
0
81 [报告]
发表于 2007-05-18 15:49 |只看该作者
同意ypxing上面说法

C中都是传值(PV)。传地址(指针)也是显式地传地址的值。
那么和PV对应的是传地址(PA或PP)。

PA的意思是你写在参数的的是个变量v, 比如func(v), 被传递的根本不是v本身,而是v的地址。这种东西才叫PA。
C中没有这样,C中写的传什么就是什么。

C++的引用就是传地址。

论坛徽章:
0
82 [报告]
发表于 2007-05-18 17:11 |只看该作者
还有,我说的FORTRAN全是引用不正确。早期的FORTRAN好象是。后来的也使用传值了(保留传引用)。

论坛徽章:
0
83 [报告]
发表于 2007-05-19 11:36 |只看该作者
同意BZ的建议,能不使用最好别使用引用。
BTW
int a = 10;
func0(int& a)
{
      ....
      int b = func1(a);
}
func1(int& b)
{
      ......
      b = 3000;
}

在这种情况下想要在func1中改变a的值,是不是func0,func1参数都要定义成引用。

我在开发中调试别人的代码遇到func0使用引用,func1没用导致a的值不变。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
84 [报告]
发表于 2007-05-20 18:48 |只看该作者
我不知道思一克在工作中是否用C++做开发的?如果用C++做过几年开发,应该不会有这样的观点吧?
站在C或汇编的角度去看C++或JAVA,有很多地方的确很难理解:这不是画蛇添足么?除了降低性能,还有什么好处呢?
但C++自有他的理由:通过封装,实现更安全、更健壮的代码,因而更有利于企业级的开发。
最可怕的代码不是纯C的,更不是纯C++的,而是C的代码却套了一个C++的壳。
用引用而不是指针的一个合理的理由是避免了内存的管理,也避免了内存的直接访问。在一个不用指针的系统中,指针越界、内存泻漏、溢出的可能性微乎其微,而这是程序不稳定的最大元凶。
我对C++代码的要求是不显式出现任何指针的使用,如果要使用指针,则必须在类里封装,使用完后立即释放或在析构函数中释放。

论坛徽章:
0
85 [报告]
发表于 2007-05-21 09:40 |只看该作者
to yuxh,

我没有用C++作过开发。主要用C。因此我难免有用C眼光看C++的偏颇之处。
同意你的观点,千万不要混合C与C++。一个C程序,偏偏来上个引用传递,完全是自找麻烦。

我不用C++,主要是考虑代码效率C++比C差,因为系统软件效率是第一位的。

看我另外一个新帖子,你熟悉C++,看怎么能写出符合你要求的高效率的C++代码。

论坛徽章:
0
86 [报告]
发表于 2007-05-21 17:49 |只看该作者
个人看法
我觉得引用存在的目的是
1.为了方便实现运算符的重载,比如以非类成员方式重载赋值家族除 = 以外的运算符,或者运算符 [] 的返回值(否则不能用在 = 左边)等
2.c++的多态性是通过使用指针和引用实现的,因为不允许空引用,引用提供了相对安全的方法(虽然似乎大部分人都在使用基类的指针而不是引用)

论坛徽章:
0
87 [报告]
发表于 2007-05-24 23:24 |只看该作者
原帖由 思一克 于 2007-5-21 09:40 发表
to yuxh,

我没有用C++作过开发。主要用C。因此我难免有用C眼光看C++的偏颇之处。
同意你的观点,千万不要混合C与C++。一个C程序,偏偏来上个引用传递,完全是自找麻烦。

我不用C++,主要是考虑代码效率C++ ...


LZ既然都提到了“系统软件”中的限制,那么当然该清楚,应用范围不同,自然不能以同一标准来要求。我不知道你对C++的疑问来自于C++本身,还是“C中的C++”?

论坛徽章:
0
88 [报告]
发表于 2007-05-25 08:59 |只看该作者
TO LS,

我主要批判的是“C中的C++”。因为这成为一个问题。有不少人开发不直接C++,而是C/C++混合,本来用C的程序非利用C++的东西。

如果一切按C++规范编C++程序,我就没有资格和道理来批判了。

还有,一个没有指针的语言必须要有引用。C++有指针,但不鼓励使用,否则又成C的程序了。还有其他的功能必须有引用才可以。

论坛徽章:
0
89 [报告]
发表于 2007-07-11 18:03 |只看该作者
看完帖子,感觉LZ有标题党的嫌疑

论坛徽章:
0
90 [报告]
发表于 2007-07-11 18:21 |只看该作者

回复 #91 思一克 的帖子

建议看一下我发的帖子:有没有人只使用纯粹的C++而不使用C的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP