免费注册 查看新帖 |

Chinaunix

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

问世间有多少事物可以归一为一个模版?C++ 的 template 能长远么?  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-21 11:14 |只看该作者 |倒序浏览
问世间有多少事物可以归一为一个模版?C++ 的 template 能长远么?

论坛徽章:
0
2 [报告]
发表于 2009-08-21 11:26 |只看该作者
一万年算不算长远?一亿年算不算长远?
有的用你就用,管那么长远做什么。

论坛徽章:
0
3 [报告]
发表于 2009-08-21 11:32 |只看该作者
今天世界上最先进的运输系统的设计是两千年前便由两匹马的屁股宽度所决定的

你还怕什么呢?勇敢的学吧

===================================================================


美国铁路两条铁轨之间的标准距离是四英尺又八点五英寸。这是一个很奇怪的标准,究竟是从何而来的呢?

  原来这是英国的铁路标准,而美国的铁路原先是由英国人建的。那么为什么英国人用这个四尺八寸半的标准呢?原来英国的铁路是由建电车的人所设计的,而这个正是电车所用的标准。

  电车的铁轨标准又是从哪里来的呢?

  原来最先造电车的人以前是造马车的,而他们是源用马车的轮宽标准。

  好了,那么马车为什么要用这个一定的轮距标准呢?因为如果那时候的马车用任何其他轮距的话马车的轮子很快会在英国的老路上撞坏的。为什么?因为这些路上的辙迹的宽度是四尺八寸半。

  这些辙迹又是从何而来的呢?答案是古罗马人所订的。因为欧洲,包括英国的长途老路都是由罗马人为它的军队所铺的,所以四尺八寸半正是罗马战车的宽度。如果任何人用不同的轮宽在这些路上行车的话他的轮子的寿命都不会长。

  我们再问,罗马人为什么以四尺八寸半为战车的轮距宽度呢?

  原因很简单,这是两匹拉战车的马的屁股的宽度。

  等一下,故事到了此还未有完结

  下次你在电视上看到美国航天飞机立在发射台上的雄姿时你留意看看在它的燃料箱的两旁有两个火箭推进器(SOLID ROCKET BOOSTERS) ,这些推进器是由一家名为THIOKOL的公司设在犹他州的工厂所提供的。如果可能的话,这家公司的工程师希望把这些推进器造的胖一点的,这样容量就可以大一些。但是他们不可以,为什么?因为这些推进器造好之后是要用火车从工厂运送到发射点,路上要通过一些隧道,而这些隧道的宽度只是比火车轨宽了一点,然而我们不要忘记火车轨的宽度是由马的屁股的宽度所设定的…

  因此,我们可以断言:可能今天世界上最先进的运输系统的设计是两千年前便由两匹马的屁股宽度所决定的。

论坛徽章:
0
4 [报告]
发表于 2009-08-21 11:33 |只看该作者
没有东西能永远存在,也不可能预测它能存在多长时间,讨论这些问题也没什么意义,存在就是真理,需要的时候拿来用就行了...

论坛徽章:
0
5 [报告]
发表于 2009-08-21 11:56 |只看该作者
原帖由 群雄逐鹿 于 2009-8-21 11:32 发表
今天世界上最先进的运输系统的设计是两千年前便由两匹马的屁股宽度所决定的

你还怕什么呢?勇敢的学吧

===================================================================


美国铁路两条铁轨之间 ...




哈哈哈哈哈,这个马屁股还真牛掰

论坛徽章:
0
6 [报告]
发表于 2009-08-21 12:11 |只看该作者
设计一个模版快,还是复制、粘贴、替代快?
我认为后者快,所以我不用 template 。

论坛徽章:
0
7 [报告]
发表于 2009-08-21 12:14 |只看该作者
原帖由 upoq 于 2009-8-21 12:11 发表
设计一个模版快,还是复制、粘贴、替代快?
我认为后者快,所以我不用 template 。


讲到复制、粘贴,或许你可以出活快,但是绝对不会是一个优秀的程序员。
也许我讲错了,兄弟别生气

论坛徽章:
0
8 [报告]
发表于 2009-08-21 12:15 |只看该作者
原帖由 upoq 于 2009-8-21 12:11 发表
设计一个模版快,还是复制、粘贴、替代快?
我认为后者快,所以我不用 template 。



template不是仅仅代替你贴代码的, 如果是这样, 用macro就可以了。

template 的功能是可以保存对象或者数据的类型。 这个在很多高级应用上, macro代替不了。

tempalte只是占用了点编译时间。 所以不比你铁代码慢。 用template是让编译器帮你敲代码, 不用那就是你自己贴了。呵呵

template可以用来实现类似.net的 delegate等功能, 还可以做s11n数据序列化, 还可以用来实现一个类型与一个id的对应。 这些都不是贴代码能解决掉的。

[ 本帖最后由 xhl 于 2009-8-21 12:21 编辑 ]

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
9 [报告]
发表于 2009-08-21 13:19 |只看该作者
原帖由 upoq 于 2009-8-21 12:11 发表
设计一个模版快,还是复制、粘贴、替代快?
我认为后者快,所以我不用 template 。


当你需要用 M 种算法处理 N 个类型的时候,你会后悔的。  

template  还有些高级用法是复制、粘贴做不出来的。

论坛徽章:
0
10 [报告]
发表于 2009-08-21 13:50 |只看该作者
原帖由 xhl 于 2009-8-21 12:15 发表



template不是仅仅代替你贴代码的, 如果是这样, 用macro就可以了。

template 的功能是可以保存对象或者数据的类型。 这个在很多高级应用上, macro代替不了。

tempalte只是占用了点编译时间。 所以 ...



没有concept的template,对应用级别的开发是噩梦。

template只适合做一些map/deque/vector/list之类的容器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP