免费注册 查看新帖 |

Chinaunix

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

想不明白,为什么很多人有C++不用非要用C面向对象 [复制链接]

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
11 [报告]
发表于 2011-09-13 14:20 |只看该作者
最后代码是 C 不像 C,C++ 不像 C++,也挺好是吧?要只是你自己的代码,当然是喜欢怎么写就怎么写 ...
MMMIX 发表于 2011-09-13 14:14


众口难调, 本来代码就是个人有个人风格; 非要学印度一样千篇一律的堆积大堆大堆的垃圾好吗?
何况c++编译出来的c还是c, 不会因c++编译器编译就成了c++了;
只使用class等基本特性的c++还是c++, 使用template等写出来的神一样的代码我反正觉的要看懂, 需要自虐才行

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2011-09-13 14:36 |只看该作者
众口难调, 本来代码就是个人有个人风格; 非要学印度一样千篇一律的堆积大堆大堆的垃圾好吗?
zylthinking 发表于 2011-09-13 14:20



    个人风格不应该体现在乱用语言特性,不顾合作者的阅读理解、不顾后续的维护。还是那句话,只是自己用的代码,想怎么写随你,多人合作的项目,还是无规矩不成方圆。

论坛徽章:
0
13 [报告]
发表于 2011-09-13 14:38 |只看该作者
个人风格不应该体现在乱用语言特性,不顾合作者的阅读理解、不顾后续的维护。还是那句话,只是自 ...
MMMIX 发表于 2011-09-13 14:36



    赞同

论坛徽章:
0
14 [报告]
发表于 2011-09-13 14:38 |只看该作者
回复 12# MMMIX


    版主啊,我发现一个广告贴~ http://bbs.chinaunix.net/thread-3594874-1-1.html  封其ID吧  

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
15 [报告]
发表于 2011-09-13 14:43 |只看该作者
回复  MMMIX


    版主啊,我发现一个广告贴~   封其ID吧
zcheung 发表于 2011-09-13 14:38



    这个应该转到“移动开发”版,可惜我在 C 版没权限,操作不了。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
16 [报告]
发表于 2011-09-13 14:52 |只看该作者
个人风格不应该体现在乱用语言特性,不顾合作者的阅读理解、不顾后续的维护。还是那句话,只是自 ...
MMMIX 发表于 2011-09-13 14:36


那么这段话就不明白你为什么不同意了:

就算写纯C代码,也可以用C++编译器,提供更严格的编译检查。  // 这个就不说了, 用c++编译器算不得乱用语言特性

需要某些面向对象特性,也可以在C的基础上,增加C++的class,使用基本的虚函数多态,
禁用诸如菱形继承等复杂的情况,其实也没什么不好。
不用iostream,就用printf,也没什么不好

这些反而是在说只使用基本特性, 反对玩语法的意思;  除非你觉得class是乱用语言特性。。。。。自然, 现在我们是再说c++, c根本没有class

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
17 [报告]
发表于 2011-09-13 15:45 |只看该作者
本帖最后由 MMMIX 于 2011-09-13 15:48 编辑
高级特性,或者说复杂特性,只用在合适的地方。禁用某种特性,需要有坚实的论据支持。
这个我理解着是高级特性不许用在所有的地方; 禁用高级特性, 又要说明为什么禁用------我不知道你到底倾向禁用还是启用

如果你能证明该语言提供的某个特性就是个错误,那我 100% 支持禁用这种特性;如果你能证明使用某种特性在 99% 的情况下弊大于利,那我支持在这 99% 的情况下禁用这种特性。如果你只是觉得某种特性很复杂,你无法很好理解掌握就要把它禁用掉,那这种禁用我是无法支持的。

我不觉得printf对c++的阅读者是中灾难, 相反, 我倾向于认为 iostream 是一种灾难。 即便它是c++ only 的, 但还是以为它根本就不应该存在。

c++也有函数调用, printf 怎么就不象c++了呢?
变参又不是c的专利。
zylthinking 发表于 2011-09-13 15:31



    我反对的是在一种语言中使用另外一种语言的风格/特性(尤其是在这么做不必要的时候,也即滥用),这么做会导致你的代码成为四不像。不是专门针对 printf/iostream。其实,这种喜欢在 B 语言中滥用 A 语言特性的人,往往都是对 A 有所了解,学习 B 的时候不愿意下功夫,结果弄了个半吊子,最后写出来的代码是 B 不像 B,A 也不像 A。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
18 [报告]
发表于 2011-09-13 16:10 |只看该作者
越来越形而上了。。。。。收回来, 我可以说认为你说得一定程度上有道理, 不过具体到c/c++, 避免写c能象c++, 我觉得不成立, c怎么写都是c, 没办法象c++, 如果使用了所谓面向对象的手法就是象c++了, 那东西多了去了, 包括若干年前c++还没有问世的时候, 估计已经有c代码象 c++了; 写c++象c, 我觉得也不成立, c是函数/结构体, c++中函数/结构体同样是最基本的特性, 为什么就不能用呢,  总不能说写c++就必须用到c没有的 class, template, 运算符重载才叫原汁原味c++。

论坛徽章:
0
19 [报告]
发表于 2011-09-13 16:18 |只看该作者

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
20 [报告]
发表于 2011-09-13 16:44 |只看该作者
越来越形而上了。。。。。收回来, 我可以说认为你说得一定程度上有道理, 不过具体到c/c++, 避免写c能象c+ ...
zylthinking 发表于 2011-09-13 16:10



    不要混淆“语法层次”的共用和“编程范式层次”的共用。我针对的主要是语法层次的,而在 C 中使用面向对象思想,则属于“编程范式”层次。如果面向对象特别适合某个问题,而你的代码又必须用 C 写,那在 C 中使用面向对象思想自然不是问题,反而应该鼓励。相反,如果针对手头的问题 C++ 已经提供了很自然的解决方案,但是由于你对 C++ 本身不熟悉,将其提供的这种更好的解决方案弃之不用,却用了一堆 C 中对应的解决方法,这样你的代码看起来就会很奇怪(至少在充分理解 C++ 对应解决方案的人看来)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP