·¢ÐÅÈË: bency (»Ø¼ÒÁË¡­¡­¡­¡­), ÐÅÇø: Npsos
±ê  Ìâ: C++µÄ³ÁÃÔÓë°®Áµ
·¢ÐÅÕ¾: ¹þ¹¤´ó×϶¡Ïã (2003Äê01ÔÂ18ÈÕ14:23:59 ÐÇÆÚÁù), Õ¾ÄÚÐżþ

C++µÄ³ÁÃÔÓë°®Áµ

×÷Õߣººî½Ý

1998.09.28 ·¢±í

ÿÄêµÄ 09/28 ì¶ÎÒ¶¼ÊÇÒ»¸öÌØÊâµÄÈÕ×Ó -- ²»Ö»ÊÇÒòΪ½Ìʦ½Ú¡£½ñÄêºÜ
ÌØÊâµØûÓÐÆÕÌìͬÇ죬ÄÇ÷áÎÒ¾ÍдƪÎÄÕÂ×Ô¼ºÇìףһϺÃÁË¡£

ÎÒ춽ñÄêÆßÔ·¢±íÁËÒ»±¾×Å×÷ <¶àÐÍÓëÐéÄâ> ºÍÒ»±¾Òë×÷ <Éî¶È̽Ë÷ C++
 Îï¼þÄ£ÐÍ> £¬»ñµÃºÜ´óµÄ»ØÏì¡£ÕâЩ×÷Æ·¶¼²»ÊÇÕë¶Ô C++ µÄÍêÈ«³õѧÕß
Ëùд£¬µ«´Ó³õ½×µ½¸ß½×ΪÊýÖÚ¶àµÄ C++ guy£¬ÈÈÇéµØ±í´ïÁËËûÃǶÔÕâЩÖ÷
ÌâµÄϲÔá£

ÔÚÐí¶àÀ´ÐÅÖУ¬ÎÒ¿´µ½Ò»Ð©ÓÐȤµÄÏÖÏó£¬Ò²¸ÐÊܵ½Ò»Ð©ÖµµÃÕûÀíÏÂÀ´µÄÏë
·¨¡£ËùÒÔ£¬¸ù¾ÝÎÒ¸öÈ˵Äѧϰ¹ýÍù¡¢ÎҵĽÌѧ¾­Ñé¡¢ÒÔ¼°ÖÜÔâÅóÓѵÄÐĵÃ
½»Á÷£¬Ð´ÏÂÕâƪÎÄÕ£¬»ò¿ÉΪááѧÕ߽䡣

¡ñ<¶àÐÍÓëÐéÄâ> ÐòÑÔ½Ú¼
¡ñ<¶àÐÍÓëÐéÄâ> ÐòÑÔ½Ú¼

Ê×ÏÈÈÃÎÒ½Ú¼ <¶àÐÍÓëÐéÄâ> Ò»ÊéÐòÑÔ£º

<¶àÐÍÓëÐéÄâ> Ðò ½Ú¼£¨ºî¿¡½Ü/ËɸÚ/1998/07£©

Ò»°ã¶øÑÔ£¬C++ ÊÇÒ»¸öÄÑѧÒ×ÓõÄÓïÑÔ¡£

C++ µÄÄÑѧ£¬³õʼÔÚì¶ÆäÖØÖصIJ¼Ä»£¬²¼Ä»Ö®ÖбàÒëÆ÷¶ÔÎÒÃǵijÌʽÂë×ö
ÁËÌ«¶àµÄÊֽţ¬Ê¹ÎÒÃǹßì¶Ñ­Ðò˼¿¼µÄ¹¤³ÌÄÔ´üÒ»ÎÞËù´ë¡£¼°³¤£¬ÓÖÃæÁÙ
еÄ˼άģʽ£¬Ê¹ÎÒÃDZØÐëŤת¹ß³£µÄ˼¿¼Ï°¹ß¡£

C++ µÄÒ×ÓÃÔòÔÚì¶Æä¾Þ´óµÄµ¯ÐÔ£¬Äܹ»ÒÔ¶àÐÍ£¨polymorphism£©¡¢ÐéÄâ
£¨virtual£©¡¢Ä£°å£¨template£©¡¢·ºÐÍ£¨generalization£©µÈÖÖÖÖÐÍʽ
£¬ÈüÈÓеÄÂëÈ¥´¦Àíδ֪µÄ¡¢Î´À´µÄ×ÊÁÏÐÍ̬¡£

µ±È»£¬Ò×ÓñØÐëÏÈÄÜÓá£Óò»ºÃ»ò²»ÄÜÓõĻ°£¬¡¸Ð´ C++ ³Ìʽ¡¹×îáá¾Í
³ÉÁËÖ»ÊÇ¡¸Ê¹ÓàC++ ±àÒëÆ÷¡¹£¬ÕâÊÇ´ó¼Ò³£ÄÃÀ´±Ë´Ëµ÷Ù©µÄЦ»°¡£

ÔÚ¡¸ÄÑѧ¡¹µÄ±³¾°Ï£¬¡¸Ò×Óá¹ÊÇʹÎÒÃÇÒÀȻǰÆÍáá¼ÌµÄ¶¯Á¦¡£ÓúÀ´Óú¶à
µÄ´óѧ×ÊѶ¿Æϵ°Ñ C++ ¿ªÔÚ´óÒ»¿Î³Ì£¬ÕâËäȻ˵Ã÷ C++ ÊǶà÷áµØÖØÒª£¬
¿ÉÒ²¿àÁË×ÊѶбøÃÇ¡£


Æäʵ¡¸ÄÑѧ¡¹µÄ×î´óÖ¢½áÔÚ춣¬ºÜÄѵÃÓÐÒ»±¾Ê飬Äܹ»Ò»Õë¼ûѪµØÖ¸³ö¶à
ÐÍÓëÐéÄâµÄÖØÒªÐÔ£»ÔÚÎÒÃÇ´Ö¾ßÓï·¨»ù´¡Ö®áᣬֱ½Ó°ÑÎÒÃǵ¼Òýµ½×îºËÐÄ
×îÖØÒªµÄ˼Ï룬²¢ÇÒÔÚ½¨Á¢Õâ¸ö˼ÏëµÄ¹ý³ÌÖУ¬Ìṩ×ã¹»µÄ±ØÒª»ù´¡¡£


¡ñÀ§ÄѶÈÖ®Ò»

¡¸C++ ÊǸöÄÑѧÒ×ÓõÄÓïÑÔ¡¹£¬Õâ¾ä»°ÏàÐźܶàÈËÐÄÓÐÆÝÆÝ¡£C++ µÄѧϰ
ÄѶȣ¬Ò»ÔÚì¶ÓïÑÔ±¾ÉíÌ«¶àµÄ¡¸Ä»¡¹£¬Ò»ÔÚ춠"paradigm shift" £¨Ë¼¿¼
ģʽµÄÒÆת£©¡£

´«Í³Ñ­ÐòÓïÑÔÈç C, Pascal, Basic, Fortran...£¬³ýÁËÄ£Ñù¿´ÆðÀ´ÉÔÓÐ
²»Í¬£¬»ù±¾É϶¼ÊǺ¯Ê½ call À´ call È¥£¬´óͬСÒ죬ºÜÈÝÒ×ÕÆÎÕ¡£ÄãÏë
×öµÄ¶¯×÷£¬ÔÚ code Öж¼¿´µÃÒ»Çå¶þ³þ¡£ÄãËù¿´²»µ½µÄ£¬ÜýÜý´óÕßÒ²²»¹ý
¾ÍÊDZàÒëÆ÷ΪÄãµÄº¯Ê½¼ÓÉÏÓÃÒÔ´¦Àí¶ÑµþµÄһС¶ÎÂ루prologue ºÍ epilogue£©
£¬ÕâһС¶ÎÂë»ù±¾ÉÏ×öµÄÊÇ housekeeping ¹¤×÷£¬Äãû¿´µ½Ò²Ã»ÓйØϵ
£¨¸üºÃ£©£¬²¢²»Ó°ÏìÄã¶Ô³ÌʽÂß¼­µÄ˼¿¼¡£

C++ ²»Ò»Ñù£¬C++ ÓÐÌ«¶àºÍ³ÌʽÂß¼­Ï¢Ï¢Ïà¹ØµÄ¶¯×÷ÊDZàÒëÆ÷ΪÎÒÃǼÓ
ÉÏÈ¥µÄ¡£»»¾ä»°Ëµ C++ ±àÒëÆ÷ΪÎÒÃÇ¡¸¼ÓÂ롹¡£Èç¹û²»Ê¶ÇåÕâÒ»½Ú£¬Ñ§
Ï°C++ ÓÐÈçÎíÀï¿´»¨£¬Îí·ÇÎí£¬»¨·Ç»¨¡£


±àÒëÆ÷ΪÎÒÃǵĠC++ ³Ìʽ¼ÓÁËʲ÷áÂëÄØ£¿ºÜ¶à£¡Îï¼þµ®Éúʱ ctor »á±»
»½Æð£¬Îï¼þËÀÍöʱ dtor »á±»»½Æð£¬ÕⶼÊǼÓÂëµÄ½á¹û¡£ctor ÖÐÉ趨
vtpr ºÍ vtbl£¬ÕâÒ²ÊǼÓÂëµÄ½á¹û¡£new µ¥Ò»Îï¼þʱ»á²úÉú memory block
cookie£¬new Îï¼þÕóÁÐʱ»á²úÉúÒ»¸öÄÚ²¿½á¹¹¼Ç¼×Å object size ºÍ
 class ctor...£¬ÕâÒ²¶¼ÊDz¼Ä»ááµÄ¹¤×÷¡£¿ÉÒÔ˵£¬³ÌʽÂëÖп´²»µ½¶ø
È´±ØÐëÍê³ÉµÄËùÓÐÓë³ÌʽÂß¼­ÓйصĶ¯×÷£¬Í³Í³¶¼ÊÇ C++ ±àÒëÆ÷¼ÓÂëáá
µÄ½á¹û¡£

µ±¡¸¼Ì³Ð¡¹·¢Éú£¬Õû¸öÇé¿ö±äµÃÉÔ΢¸´ÔÓÆðÀ´¡£¡¸¶àÖؼ̳С¹ÓÖ¸ü¸´ÔÓ
һЩ£¬¡¸ÐéÄâ¼Ì³Ð¡¹ÔÙ¸ü¸´ÔÓһЩ¡£

ÕâЩ²¼Ä»ááµÄÖ÷Ì⣬ͳ¿É¹éÀàΪËùνµÄ C++ object model£¨Îï¼þÄ£ÐÍ
£©¡£Èç¹û²»ÖªµÀÕâЩµ×²ã»úÖÆ£¬Äã¾ÍÖ»Äܹ»°Ñ "make destructors
virtual in base classes"£¨<Effective C++>, item14£©»ò "never
 treat arrays polymorphically" £¨<More Effective C++>, item 3£©
ÕâÀà¹æÔòÓ²±³ÏÂÀ´£¬È´²»Ã÷°×ËüµÄµÀÀí¡£
ÓÃÒ»Ñù¶«Î÷£¬È´²»Ã÷°×ËüµÄµÀÀí£¬ÁÖÓïÌÃÈçÊÇ˵£º¡º²»¸ßÃ÷¡»¡£Ö»ÖªµÀ
how£¬²»ÖªµÀ why£¬ºî½ÝÈçÊÇ˵£º¡º²»¸ßÃ÷¡»¡£

¡ñÀ§ÄѶÈÖ®¶þ

C++ µÄµÚ¶þ¸öѧϰÄѶÈÔÚ춠"paradigm shift"£¨Ë¼¿¼Ä£Ê½µÄÒÆת£©¡£
C++ µÄµÚ¶þ¸öѧϰÄѶÈÔÚ춠"paradigm shift"£¨Ë¼¿¼Ä£Ê½µÄÒÆת£©¡£
±ð˵×Ô¼ºÉè¼Æ classes ÁË£¬¹âʹÓñðÈ˵Ġclasses£¬¾Í¶¼ÊÇÒ»ÖÖ˼¿¼
ģʽºÍÐÐΪģʽµÄÒÆת¡£MFC£¨»ò OWL »ò VCL£©programmer ±ØÈ»ÉõÄÜ
¹»ÁìÂÔ²¢Ìå»áÎÒµÄÒâ˼¡£

ʹÓÃËùνµÄ application framework£¨Ò»ÖÖ´óÐ͵ġ¢Äý¾ÛÐÔÇ¿µÄ¡¢ÓÐ×Å
Îï¼þµ¼Ïò¹«¹²»ù´¡½¨ÉèµÄ class library£©£¬ÄãµÄÂëºÍ framework Ö®¼ä
¾¿¾¹ÊÇÔõÑùµÄ¹ØϵÄØ£¿framework ÌṩµÄÒ»´ó¶Ñ¿É¸ÄдµÄÐéÄ⺯ʽµÄÒâÒå
Óë¼ÛÖµ¾¿¾¹ÔÚÄÄÀïÄØ£¿ÎªÊ²÷á framework ËùÉè¼ÆµÄÖÖÖÖÃÀºÃÐÔÖÊÒÔ¼°¸÷
ʽ¸÷ÑùµÄÑÝËã·¨¾¹È»¿ÉÒÔÊ©ÐÐì¶ÎÒÃÇ×Ô¼ºÉè¼ÆµÄ class types ÉíÉÏÄØ£¿
framework ±»Éè¼Æʱ£¬²¢²»ÖªµÀÎÒÃǵĴæÔÚѽ£¡

ÕâÕýÊÇÎï¼þµ¼ÏòÖеĶàÐÍ£¨polymorphism£©µÄÍþÁ¦¡£

ÉÔÔçËù˵µÄ C++ Îï¼þÄ£ÐÍ£¬Æ«Êô³ÌʽÉè¼ÆµÄµÍ²ãÃ棻ÕâÀïËù˵µÄ˼¿¼Ä£
ʽÒÆת£¬ÔòÊdzÌʽÉè¼ÆµÄ¸ß²ãÃæ¡£Äܹ»°ÑÐÂ˼άģʽµÄÍþÁ¦·¢»ÓµÃ×îÁÜÀì
¾¡Öµģ¬µ±ÍÆÎï¼þµ¼ÏòµÄ polymorphism£¨¶àÐÍ£©ºÍ generalization£¨
·ºÐÍ£©¡£Èç¹ûÄãûÓÐʹÓÃÕâÁ½ÏîÌØÐÔ£¬µÈì¶Èë C++ ±¦É½¶ø¿ÕÊÖ·µ¡£

¡ñ·´¸² Á¶£¬Ñ­»·Õðµ´

ÏëÏñ C++ ÊÇÒ»°ÑÓÃÀ´½â¾ö³ÌʽÎÊÌâµÄµ¶£¬ÒªËü¼áéí£¬ÒªËü·æÀû£¬¾Í±ØÐë
¾­¹ý¶à´ÎµÄ»Ø»ð£¬ÔÚ¸ßÈȺÍÖèÀäÖ®¼ä Á¶¡£
¾­¹ý¶à´ÎµÄ»Ø»ð£¬ÔÚ¸ßÈȺÍÖèÀäÖ®¼ä Á¶¡£

³õѧ C++ Óï·¨£¨syntax£©Ö®áᣬÄãÓ¦¸Ã¾¡¿ì³¢ÊÔÌåÑé polymorphism
£¨´óÖ¶øÑÔÒ²¾ÍÊÇÐéÄ⺯ʽµÄÔËÓã©¡£µÈµ½¶Ô OOP µÄ¾«ÉñÓÐÁË´ó¾ÖÕÆ¿Ø
µÄÄÜÁ¦£¬µ«¶Ô C++ µÄÐí¶àСϸ½Ú²»ÉõÇå³þ£¬¾ÍÊǻص½C++ Îï¼þÄ£ÐÍ Á¶
µÄʱ»ú¡£

³É³¤£¬ÊÇÔڸ߽ף¨polymorphism£©ºÍµÍ½×£¨object model£©Ö®¼ä·´¸²Õð
µ´£¬²ÅÄܹ»Õðµ´µ½¸ü¸ßµÄλ½×£¬¶ø²»ÊÇƽƽӹӹì¶Öнף¨C++ syntax£©
µÄһ̲ËÀË®¡£

¡ñ²»Òª³ÁÂÙ춠C++ syntax

100 ¸öÈ˸úÎÒ˵Ëû¶® C++/OOP£¬Ö»ÓР10% ²»µ½¿ÉÒÔÈÃÎÒÈÏΪËûûÓкú´µ
´óÆø¡£Ì«¶àµÄÈË£¬ÉÏÂïÉϲ»µ½ polymorphism£¬ÏÂÂïÓÖϲ»µ½object model¡£
¾ÍÕâÑù²»Éϲ»Ïµؿ¨ÔÚ C++ Óï·¨²ãÃæ¡£´óһѧÁËC++£¬µ½´óËÄ¿ì±ÏÒµÁË£¬
Á¬ virtual functions ÊÇÔõ÷á»Øʶ¼ÆÚÆÚ°¬°¬Ö§Ö§ÎáÎá˵²»³ö¸öµÀÀí¡£

ÓÐʱºòÎÒ¾õµÃ£¬Ì«¿ÁÔðͬѧҲì¶ÐIJ»ÈÌ£¬ÒòΪͬѧÃÇÊÂʵÉÏ´¦ì¶Ò»ÖÖÎÞÖª
µÄ״̬£¬¼È²»ÖªµÀ C++/OOP ¸ÃÔõ÷áѧ£¬Ò²²»ÖªµÀÄÄЩÊé¿ÉÒÔ½ÌËûÃÇÄÇ÷á
ѧ¡£ËùÒÔ£¬¿ÁÔðͬѧ£¬²»ÈçÔð¹ÖÀÏʦ¡£

ÖÚËùÖÜÖª£¬´óѧ½ÌÊÚÌ©°ëÊǶ¯¿Ú²»¶¯ÊÖ£¬ÆÕ±éµÄÐÄ̬ÊÇ¡¸ÂÛÎĵÚÒ»£¬ÉýµÈ
ÖÚËùÖÜÖª£¬´óѧ½ÌÊÚÌ©°ëÊǶ¯¿Ú²»¶¯ÊÖ£¬ÆÕ±éµÄÐÄ̬ÊÇ¡¸ÂÛÎĵÚÒ»£¬ÉýµÈ
ΪҪ£»³ÌʽÓïÑÔ£¿°¥£¬Ä©Á÷£¡¡¹¡£¡¸Ä©Á÷¡¹¿Î³Ìͨ³£ÓɽÌÊÚÃÇÂÖÁ÷½Ì£¬Ë­
µ¹é¹Ë­À´½Ì£»ì¶ÊǾͳ£³£ÓС¸ÏÂѧÆÚÒª½Ì C++ ÓïÑÔÁË£¬ÕâѧÆÚº®£¨Ê¼Ù
¸Ï¿ìÈ¥Òª±¾ÊéÀ´¶ñ²¹¡¹µÄÇé¿ö·¢Éú¡£Æ«Æ«³ÌʽÓïÑÔÕⶫÎ÷£¬Ö»¶¯¿Ú²»¹ÜÓÃ
£¬Ò»¶¨Òª¶¯ÊÖ£¬¶øÇÒÒª³£¶¯ÊÖ¡£ÀÏʦ×Ô¼ºÃ»ÓÐÃþµ½C++/OOP µÄ¾«Éñ£¬Ñ§Éú
ÓÖÄÜѧµ½Ê²÷᣿

ÓÐЩѧУ×ÊѶϵ²¢²»½ÌÌض¨µÄ³ÌʽÓïÑÔ£¬ÀÏʦÃǵÄ̬¶ÈÊÇ¡¸ÓïÑÔÊÇÒ»ÖÖ×Ô
¼ºÑ§¾ÍºÃÁ˵Ķ«Î÷ÂÄõ½´óѧµîÌÃÀ´£¬°¥£¬²»ÈëÁ÷¡¹£¡ì¶ÊÇÓ¦¸ÃºÃºÃΪ
ѧÉú´òÏÂʵ¼Ê»ù´¡µÄ¿Î³Ì£¬È´ÌìÂíÐпյØÌÚÔƼÝÎíÆðÀ´£¬´ó̸³éÏóÒâÄî¡£
±¥¶Á¾­ÊéµÄÀÏʦÃÇ¿ÉÄܺöÂÔÁË£¬Ò»¸öÍêȫûÓм¼Êõ»ù´¡µÄѧ×Ó£¬ÒªµÄ²»ÊÇ
ÐζøÉϵĵÀ£¬¶øÊÇÐζøϵÄÆ÷¡£

ÎÒÃÇÊÇÏÈÄܹ»ÐÀÉ;ßÏó»­£¬»¹ÊÇÏÈÄܹ» ÀÉ ³éÏó»­£¿ÎÒÃDz»¶¼Ê ÏȶԱϿ¨
Ë÷µÄ»­´óÂÕâÊÇʲ÷ᶫÎ÷¡¹£¬Ö±µ½×Ô¼ºµÄÒÕÊõº­Ñø¹»·á¸»ÁË¡¢ÈËÉúÔÄÁ·
¸ü±¥ÂúÁË¡¢Äܹ»¾ÙÒ»ÓçÒÔÈýÓç·´ÁË¡¢Äܹ»½Ó´¥ÀàÅÔͨ×óÓÒ·êÔ´ÁË£¬²Åת¶ø
Äܹ»ÐÀÉÍÉõÖÁ½øÈë±Ï¿¨Ë÷µÄ³éÏóÒâ¾³Âð£¿

ÀÏʦÃǸ÷ÓÐר³¤£¬ÒªÀÏʦÃÇÀ´½Ì·Ç±Ëר³¤µÄ´ó°à¿Î¡¢»ù´¡¿Î£¬ÎÒÓÖ¾õµÃËÆ
ºõҲ̫ΪÄÑÀÏʦÁË¡£ÄÇ÷ᣬ¿ÁÔðÀÏʦ£¬²»ÈçÔð¹ÖѧУµ±¾Ö¡£Èç¹ûѧУµ±¾Ö
Äܹ»Æ¸Çë¾­ÑéÀϵÀÓÖÓнÌѧÈȳϵŤ³ÌʦÀ´½ÌÕâÀàʵÎñѧ¿Æ£¬²»ÊÇÈý·½½Ô
´ó»¶Ï²Â𣿲»ÒªËµÊ²÷áÖƶȽ©»¯À²£¬ÄÑÒÔÍ»ÆÆÀ²£¬´óѧÊǸ߶È×ÔÖÎÇø£¬Àñ
Ƹ¼¸Î»¼æÈÎÀÏʦ£¬²»È«¶¼ÊÇϵÉϵÄȨÔð·¶Î§ÄÚÂð£¿
Ƹ¼¸Î»¼æÈÎÀÏʦ£¬²»È«¶¼ÊÇϵÉϵÄȨÔð·¶Î§ÄÚÂð£¿

µ±Ñ§×ÓÃÇÔڿγÌÉÏѧ²»µ½ËûÒªµÄ¶«Î÷£¬¾ÍÖ»ºÃ±ÕÃÅ×ÔÐÞ¡£µ«ÊÇ£¬Ñ­ÐòÐÔ
£¨sequential£©ÓïÑÔÉÐÓÐ×ÔÐÞѧ»áµÄ¿ÉÄÜ£¬Îï¼þµ¼ÏòÓïÑÔÂÒÔ´óѧÉú
µÄ³Ì¶ÈÀ´½²£¬ÎÒÈÏΪ×ÔÐÞʵÔÚÀ§ÄÑ£¬Ö»»áÐÞ³ö¸öËIJ»Ïñ¡¢°ëÆ¿Ë®¡£

¹Ü²»µ½Ñ§Ð££¡¹Ü²»µ½½ÌÊÚ£¡×ÔÇó¶à¸£µÄÇé¿öÏ£¬Ï£Íû¿´µ½ÕâƪÎÄÕµÄÄ㣬
ÖªµÀ C++/OOP ¸ÃÔõ÷áѧ¡£

¡ñ²»Òª³ÁÃÔ춠C++ semantics ºÍ C++ object model

¶Ô춵ײã֪ʶÓÐŨºñÐËȤµÄÅóÓÑ£¬ÏÂ̽µ½ object model ÁìÓò£¬Ò»¶¨»á
·Ç³£¿ªÐĵØÔÚ object size¡¢object layout¡¢vptr/vtbl¡¢ÒÔ¼°Ðí¶à
²¼Ä»ááµÄ¼¼ÊõÖ®¼äÍ潫ÆðÀ´¡£Á˽âÕâЩ¶«Î÷£¬µ±È»ÊǺõģ¬µ«ÊÇÓÉì¶Ò»
̽¾¿¾¹µÃÆä°ÂÃصĿì¸ÐÓë³É¾Í¸Ð£¬Ê¹µÃһЩÅóÓÑÃÇÔÚÕâ¸ö²ãÃæÀÍ桹
ÆðÀ´ÁË£¬Ð¡µØ·½ÍæµÃºÜ¾«£¬ÍæµÃ²»ÒàÀÖºõ£¬ÍæµÃºöÂÔÁË C++/OOP µÄ×î
ÖÕÄ¿±ê¡£

×îÖÕÄ¿±êÊÇ polymorphism£¡

ÎÒҪ˵£¬ÔÚ C++ syntax ÒÔ¼°Ïà¶ÔµÍ½×µÄ C++ semantics À²»ÒªÍæµÃ
Ì«¹ý»ð¡£¹ýÓ̲»¼°£¬»áÉËÉíµÄ¡£C++ ¾­µäÃûÊéÄÚ¸½µÄһЩϰÌ⣬ÔÚÎÒ¿´À´
ÆÄÓеãÍæµÃ¹ý»ðµÄζµÀ¡£ÖÁì¶Ê²÷á°ÙÌ⾫ѡ¡¢Ìâ¿â´ó³É£¬³ýÁËÐÞÁ·»ù±¾¹¦
ÆÄÓеãÍæµÃ¹ý»ðµÄζµÀ¡£ÖÁì¶Ê²÷á°ÙÌ⾫ѡ¡¢Ìâ¿â´ó³É£¬³ýÁËÐÞÁ·»ù±¾¹¦
Ö®Í⣬¶¼ÂúÎÞȤµÄ¶«Î÷¡£

Programming Ó¦¸ÃÊÇÒ»ÖÖÌìÂíÐпյÄÏëÏñÁ¦Óë´´ÒâµÄ×éºÏ£»Èç¹ûÄãÄܹ»×Ô
¼ºÏëÌâÄ¿£¬Æ©Èç˵ʵ×÷Ò»¸öÌìÌåÔËÐеĠclass Ìåϵ¡¢»òÊÇʵ×÷Ò»¸öÉúÎï·Ö
Àࣨ½çßÙÄ¿¿ÆÊôÖÖ£©Ìåϵ£¬²»ÊǺÜÓÐȤÂð£¿×¼±¸×ÊÁϵĹý³ÌÖУ¬²é²é°Ù¿Æ
È«Ê飬ÄãÒ²Òò´Ë²éµ½ÁËÌ«Ñôϵ¾Å´óÐÐÐǵļ¸ºÎ×ÊÁÏ£¬¹þÀ×»ÛÐǵĹìµÀÖÜÆÚ
£¬»òÊǺÚÃæÅýðصġ¸½çßÙÄ¿¿ÆÊôÖÖ¡¹Ó¢ÎÄÃû³Æ£¬ÕâÄѵÀ²»±È×êÑÐ춠++++i
 »ò ----i »ò *&*&p Ö®ÀàµÄÍ·ÄÔÌå²ÙÌâÄ¿ÓÐȤÂ𣿣¨¿´¹ý²»ÉÙÕâÀàºÃЦ
ÌâÄ¿£¬Ã»Ò»¸ö¼ÇÏÂÀ´£¬Ö»ºÃºúÂÒд¼¸¸öÔËËãʽ¡£ÖîλӦ¸ÃÖªµÀÎÒ˵µÄÄÇÖÖ
Í·ÄÔÌå²ÙÌâÄ¿£©

¹ÌÈ»£¬ÔÚ¿ÆѧÓ빤³ÌµÄÁìÓòÀïÍ·£¬ÎÞ¼¼ÊõÎÞÒÔΪÁ¢£¬µ«±ð°Ñ×Ô¼ºÅªµÃ¹ý춽©
»¯£¬¹ý춽³Æø¡£½©»¯Óë½³ÆøÊÇÎÒÃǽÌÓýÌåϵµÄ×î´ó³Áðâ¡£µ½Á˸ßר²ã´Î£¬
°ÜÏóÏÔ¶ÎÞÒÅ¡£

¡ñÃûÊéÍƼö

Èç¹ûûÓнéÉܼ¸±¾ºÃÊ飬ÎÒ¾ÍÊÇΪµÂ²»×ä¡£

ÈÃÎÒÔÙ½Ú¼ <¶àÐÍÓëÐéÄâ> µÄ¶þË¢¸ÐÑÔ£º

<¶àÐÍÓëÐéÄâ> Ò»°æ¶þË¢¸ÐÑÔ £¨ºî¿¡½Ü/ËɸÚ/1998/08£©... C++ Ïà¹ØÊé¼®
<¶àÐÍÓëÐéÄâ> Ò»°æ¶þË¢¸ÐÑÔ £¨ºî¿¡½Ü/ËɸÚ/1998/08£©... C++ Ïà¹ØÊé¼®
£¬ÈçÌìÉÏ·±ÐÇ£¬Èç¹ý½­Ö®öê¡£¹ã²©ÈçËÄ¿âÈ«ÊéÕßÓÐÖ®£¨Èç The C++ Programming
 Language¡¢C++ Primer£©£¬Éî°ÂÍðÈçɽÖØË®¸´ÓÐÖ®£¨Èç Inside The C++
Object Model£©£¬¶À¹ÁһζÕßÓÐÖ®£¨Èç C++ Programming Style¡¢More
Effective C++£©£¬¶ÀÊ÷Ò»ÖÄÕßÓÐÖ®£¨Èç The Design and Evolution of C++£©
£¬Áí±Ùõ辶ÕßÒàÓÐÖ®£¨Èç STL tutorial Reference Guide£©¡£...

ÒÔÏÂÊÇÎÒÈÏΪÄãÓ¦¸ÃÒªÓµÓеÄÊé¼®¡£ÓÐȤµÄÊÇ£¬ÎÒ²ÅÔÚ×Ô¼º°àÉÏ×öÁËÒ»¸öµ÷²é
£¨Îҽ̵ÄÊÇÎï¼þµ¼Ïò Windows ³ÌʽÉè¼Æ£¬Ñ§ÉúÓ¦¸ÃÒªÓÐÁ¼ºÃµÄ C++/OO »ù´¡£©
£¬ÓµÓÐÒÔÏ 1~5 ±¾ÊéµÄÈ˾ÙÊÖ¡£¾ÙÊÖÈËÊý¶¼ºÜÉÙ£¬¶øÇÒÀÏÊÇÄǼ¸Î»£¨×î¸ß¼Ç¼
ÊÇÓµÓÐËı¾£©¡£ÕâÈÃÎҸоõ£¬Ç¿ÕߺãÇ¿£¬ÈõÕߺãÈõ¡£±¯·ò£¡

1. C++ Primer (3/e), Lippman/A.W./1998
£¨Ìý˵ 1999 ½«ÓÐÖÐÒë±¾£©

2. The C++ Programming Language (3/e), Bjarne/A.W./1997
£¨Ìý˵ 1999 ½«ÓÐÖÐÒë±¾£©

ÒÔÉÏÁ½±¾ÊéÊÇ C++ ¾­µä°Ù¿Æ¡£¾ÍÄÚÈÝˮƽ¶øÑÔ£¬ÎÒÈÏΪͬΪè¤ÁÁ¡£ ÆÕ±éµÄÓ¡
ÏóÊÇ£¬µÚÒ»±¾½ÏÒ×½ÓÊÜ£¬µÚ¶þ±¾É¬Î¶ÉÔÖØ¡£µÚ¶þ±¾Êé ×÷Õß Bjarne ÊÇ C++
ÓïÑԵĴ´ÔìÕߣ¬ËùÒÔÓÐÆäȨÍþÐÔ¡£ÎÒÈÏʶµÄ¶à Î» C++/OOP ¸ßÊÖ£¬¶¼ÊÇÁ½ÊéÆë¾ß¡£




3. Inside The C++ Object Model, Lippman/A.W./1996
£¨ÖÐÒë±¾ <Éî¶È̽Ë÷ C++ Îï¼þÄ£ÐÍ>£©

È«Êé½²½â C++ object model£¬ÉÏÇî±ÌÂäÏ»ÆȪ¡£ÄÚÈݺܺ㬲ã´ÎÒ²¸ß£¬ ¿Éϧ
Ô­ÎÄÊé´ó´óССµÄ´íÎó·±È糿ÐÇ£¬ÔĶÁʱÐèСÐÄ¡£

4. Effective C++, Meyers/A.W./1992
£¨Ó¡ÏóËÆÓÐÖÐÒë±¾£¬Ãû³ÆÍüÁË£¬Ë­¿É²¹³ä˵Ã÷£¿£©

5. More Effective C++, Meyers/A.W./1996
£¨ÓÐÖÐÒë±¾Âð£¿ÎÒ²»ÖªµÀ£¬Ë­¿É²¹³ä˵Ã÷£¿£©

ͬһ×÷ÕßµÄÕâÁ½±¾Ê飬ר½² C++ programming µÄÖØÒª¹ÛÄʹÄãµÄ³Ìʽ ¸üÎÈ
½¡¸üÓÐЧÂÊ¡£ÊéÖÐÐí¶à¹ÛÄîÉæ¼° C++ object model£¬Óë (3) Êé»ìºÏ¿´£¬ Èç
ÓãµÃË®¡£

6. Polymorphism in C++ <¶àÐÍÓëÐéÄâ> ºî¿¡½Ü/ËɸÚ/1998
£¨Ã»ÓÐÖÐÒë±¾ -- Ëü±¾Éí¾ÍÊÇÖÐÎÄÊ飩

ÔÚÓï·¨´Ö¾ßµÄ»ù´¡ÉÏ£¬Ö±½Ó°Ñ¶ÁÕßµ¼Òýµ½×îºËÐÄ×îÖØÒªµÄ˼Ï룬²¢ÇÒ ÔÚ½¨Á¢Õâ
¸ö˼ÏëµÄ¹ý³ÌÖУ¬Ìṩ×ã¹»µÄ±ØÒª»ù´¡¡£

½¡¸üÓÐЧÂÊ¡£ÊéÖÐÐí¶à¹ÛÄîÉæ¼° C++ object model£¬Óë (3) Êé»ìºÏ¿´£¬ Èç
6. Polymorphism in C++ <¶àÐÍÓëÐéÄâ> ºî¿¡½Ü/ËɸÚ/1998
£¨Ã»ÓÐÖÐÒë±¾ -- Ëü±¾Éí¾ÍÊÇÖÐÎÄÊ飩

ÔÚÓï·¨´Ö¾ßµÄ»ù´¡ÉÏ£¬Ö±½Ó°Ñ¶ÁÕßµ¼Òýµ½×îºËÐÄ×îÖØÒªµÄ˼Ï룬²¢ÇÒ ÔÚ½¨Á¢Õâ


ÎÒÖ»ÁгöÒ»±¾ÖÐÎÄÊ飬ÊÇÒòΪÕâ·½ÃæµÄÖÐÎÄÊéÎÒ¿´µÃÉÙ£¬Ó¢ÎÄÊé¿´µÃ¶à¡£¡¸¿Ö
ÓÐÒÅÖéÖ®º¶¡¹ÕâÀࡸ°Ë·½µÃÌ塹µÄ»°£¬»¹ÊÇ˵һϺÃÁË :)¡£
×¢Ò⣬ÕâЩ¶¼Ö»ÊÇÇ¿±¾¹ÌÔªÓÃÀ´Ôú»ù´¡µÄÊé¼®¶øÒÑ£¬Òª¹ÛĦ´óÐͳÌʽ¾­Ñ飬»¹
ÓÐÖîÈç Large Scale C++ Software Design£¨John Lakos/A.W./1996£©¿ÉÒÔ
ÔĶÁ¡£

OO µÄÊÀ½ç£¬²»Ö¹ OOP£¬»¹ÓРOOA/OOD£¬ÄÇÓÖÊÇÒ»¸××ÓµÄѧÎʺÍÒ»¸××ÓµÄÊé¡£

--- end



--
ÓôÃÆ

¡ù À´Ô´:¡¤¹þ¹¤´ó×϶¡Ïã bbs.hit.edu.cn¡¤[FROM: 210.46.72.251]
[°Ù±¦Ïä] [·µ»ØÊ×Ò³] [Éϼ¶Ä¿Â¼] [¸ùĿ¼] [·µ»Ø¶¥²¿] [Ë¢ÐÂ] [·µ»Ø]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º2.544ºÁÃë