主题:庆祝Python跃居世界第四程序语言 -- 空格
共:💬100 🌺284
overload,还不如说是因为隐形的类型转换(Implicit conversion),即int被允许自由的转换成float。如果不允许int隐形转为float,你如果想调用void foo(float),只能写成foo(1.0)或者foo(static_cast<float>(1))。而如果code里写成foo(1),读你的code的人必然意思到还有一个函数void foo(int)存在。这个隐形的类型转换是C的几个最被人指责的缺点之一。C++中为了和C兼容而不得不支持。在具体的工程开发中,比如我所在的公司,禁止使用隐形的类型转换。
运算符overload最重要的应用是在generic programming。可以说如果不支持运算符overload,你不可能实现generic programming。
- 相关回复 上下关系8
压缩 4 层
🙂C++的重载可以做到这个吗 sunsol 字39 2011-03-12 02:06:44
🙂可以 透明 字642 2011-03-12 02:34:49
🙂我也并非完全反对重载 10 gcc296 字2012 2011-03-08 07:52:45
🙂你举的例子里之所以会产生混淆,与其说是因为
🙂语法是很末节的东西 1 午茶 字755 2011-03-07 13:23:28
🙂讨论一个特性的得失应当看它的机会收益 7 gcc296 字1570 2011-03-07 18:42:20
🙂你的思路在你的帖子里前后并不统一 1 老石头 字317 2011-03-12 01:41:47
🙂c++真是个大酱缸,引入太多特性,太臃肿了 博客南 字0 2011-03-07 21:32:25