QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4775|回复: 4
打印 上一主题 下一主题

[转帖]使用C++模板的优点和缺点

[复制链接]
字体大小: 正常 放大
lckboy        

26

主题

1

听众

218

积分

升级  59%

  • TA的每日心情

    2014-2-22 20:49
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    群组2014美赛MCMA题备战群

    群组2014美赛MCMB题备战群

    跳转到指定楼层
    1#
    发表于 2004-6-8 20:10 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    <>作为C++语言的新组成部分,模板引入了基于通用编程的概念。通用编程是一种无须考虑特定对象的描述和发展算法的方法,因此它与具体数据结构无关。但在决定使用C++模板之前,让我们分析一下使用模板的优缺点。</P>
    / p7 Z: {* X$ @  O/ L<><b>目的:</b>
    7 {5 c& K9 I2 i0 V6 p2 W当被问及引入C++模板的目的时,C++的发明者Bjarne Stroustrup告诉我“这是为了支持类型安全、类容器的有效性和算法的通用性”。</P>7 T9 `& d6 L& ]' H
    <><b>优势和劣势:</b>  t  [! i+ f2 e( |0 H% ?7 K( ?
    使用模板有很多原因,最主要的为了得到通用编程的优点。国际标准化组织(ISO)为C++建立了C++标准库,该标准库功能强大,这证明了模板的重要性。库中涉及算法和容器的部分组成了标准模板库(简称STL)。由于模板的可重用性和可扩展性,你可以利用STL来实现效率很高的代码。</P>
    ' y0 N3 u8 P5 q/ W1 b% Z1 r<>但是模板也有一些不太为人知的缺点。首先,由于C++没有二进制实时扩展性,所以模板不能像库那样被广泛使用。模板的数据类型只能在编译时才能被确定。因此,所有用基于模板算法的实现必须包含在整个设计的头文件中。通过分析标准模板库(STL)的头文件,你可以很清楚的认识到这一点。</P>
    3 e" V" O; b3 O8 p: X( o$ ^<>另外,由于模板只是最近加入C++标准中,所以有些C++编译器还不支持模板,当使用这些编译器时编译含有模板的代码时就会发生不兼容问题。例如,Mozilla浏览器开发组之所以没有使用模板就是因为交叉平台会导致模板的不兼容。同样的,如果当开发者需要跨越好几个平台而有的平台可能只有老的C++编译器的时候,使用模板也是不明智的。</P>
    , o# p# p2 F7 Q0 [0 A<>即使到现在,模板的一些高级特性,例如局部特殊化和特殊化顺序在不同的C++标准实现中也还是不统一的。</P>
    / f5 {  Q1 o$ Q2 O! l( I<>尽管如此,结合STL使用模板还是可以大大减少开发时间。模板可以把用同一个算法去适用于不同类型数据,在编译时确定具体的数据类型。</P>
    # o+ u& X2 w6 D7 A1 y( N2 j<>比方说,假设你希望实现一个诸如TCP/IP堆栈所用的开窗重排序机制。这个机制可用于IP数据报和其它数据报格式。通过使用模板后,开窗重排序机制就像流控制那样,无须随所处理数据格式而改变。</P>2 x# u6 \! S8 g0 K, U
    [此贴子已经被作者于2004-6-8 20:12:24编辑过]
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    回复

    使用道具 举报

    无名        

    5

    主题

    1

    听众

    68

    积分

    升级  66.32%

    该用户从未签到

    新人进步奖

    1998年,国际C++标准正式通过,标准化对C++最重要的贡献是:对"强大的抽象概念"给于更有力的支持,以降低软件的复杂度,C++提供了二种功能强大的抽象方法:面向对象编程与泛型编程。泛型编程是以模版为支持的。
    回复

    使用道具 举报

    zjf        

    1

    主题

    2

    听众

    62

    积分

    升级  60%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    chenlk        

    0

    主题

    2

    听众

    26

    积分

    升级  22.11%

    该用户从未签到

    新人进步奖

    <DIV class=quote><B>以下是引用<i>ilikenba</i>在2004-6-8 22:53:58的发言:</B>' C; g; b- [# `5 \+ k; c" c
    模板的使用虽然给编程带来了很多方便!但也给C++的学习带来了更大的难度!</DIV><p>
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-30 04:15 , Processed in 0.544347 second(s), 75 queries .

    回顶部