免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4723 | 回复: 22
打印 上一主题 下一主题

[C++] 每多了解一点C++,就觉得C++面向对象的胜利就像tg夺取了政权 [复制链接]

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-09 16:12 |只看该作者 |倒序浏览

背后搞的东西目前知道的还不多,让我最恶心的是动多态,除了运行时效率,转到定义时提示

一堆定义,直接转到的未必是实际调用的,浪费了茫茫多的青春在跟踪运行线路上而不是真正

的理清逻辑。

除了原设计者相对清楚,别人维护或使用、扩展代码,要浪费太多时间。简直就是不人道、谋

害脑细胞。

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2013-01-09 16:41 |只看该作者
不赞同你的观点
1。为什么要用“动多态”?和Java等不一样的地方是,C++不为你不需要的付出代价。
2。在需用使用“动多态”的场合,您能不能找到一个比C++相应机制更好的方法?
3。“一堆定义,直接转到的未必是实际调用的” --- 既然是“动多态”,也就是说根本无法静态分析。类似的情况,包含但不限于“动多态”^_^,除了神仙都没法。

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
3 [报告]
发表于 2013-01-09 17:07 |只看该作者
回复 2# bruceteen


    我希望的,就是用C重构。。。

论坛徽章:
0
4 [报告]
发表于 2013-01-09 17:33 |只看该作者
回复 3# cokeboL


    C的函数指针更加灵活,那是不是可以说这样更麻烦了?

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
5 [报告]
发表于 2013-01-09 17:52 |只看该作者
回复 4# shanehan


您想表达什么?比如函数指针重新赋值,然后调用?C很少需要这样写,或者,我个人觉得除了回调,而且即使是回调也不至于

像动多态一样让人花费过多时间在上下文上,其他场景下不去采取不必要的花哨的编程方式,应该可以避免函数指针带来的混乱。

最近学和用C++,也是看了linus对C++的批评深有感触,引一段linus的:
  1. 内核开发使用C语言而非C++的理由之一,是交流。在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的确切含义才能提高开发效率。而C++引入的各种抽象则使代码非常依赖上下文,想理解一段代码,需要看多得多的上下文。
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
6 [报告]
发表于 2013-01-09 17:54 |只看该作者
LZ的语文是门房间老伯教的?

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
7 [报告]
发表于 2013-01-09 18:05 |只看该作者
回复 6# noword2k

我承认我语文不太OK,而且说话有些长句子偶尔需要别人费心来分析意思,但是至少您楼上有人能看懂我

想表达的或至少部分我想表达的意思。

总会有一些艰深的书籍,看都会很累,因为分析语句的意思就很费智商。我的语言应该不算艰深,但是如果

对您来说算,您可以绕行

论坛徽章:
0
8 [报告]
发表于 2013-01-09 18:21 |只看该作者
我觉得面向对象对数据和操作进行封装后,接口太多,各种调来调去,挺乱的,然后引入虚函数后使接口简单了些,但带来的问题是复杂了继承体系,耦合性也很高。
但有利器boost::function/boost::bind,以模板和多态实现了像C语言的函数指针一样的简洁清晰且低耦合的解决方案,所以楼主可以按这种方式把virtual函数去掉了,对象之前除了包含关系以外,只需要用回调做一些关联就好了,那这样还有楼主所说的问题吗?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
9 [报告]
发表于 2013-01-09 18:45 |只看该作者
C++也不差, 别偏激, 个人喜好是个人喜好, 客观事实也不能逃避.

重要的是谁用, 不是用谁, 记着这个可能就没什么语言信仰了.

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
10 [报告]
发表于 2013-01-09 19:01 |只看该作者
http://bbs.chinaunix.net/thread-3761930-1-1.html
    Being abstract is something profoundly different from being vague… The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger Dijkstra

抽象和模糊完全地不同,抽象的目的并不是把事情变模糊,而去创建一个新的语义层,在那里是绝对精确的描述。 — Edsger Dijkstra



记住并尽量去理解和实践这句话。不然用再简单的语言做简单的工作,也总有人能把它弄成鬼画符。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP