ÔÚÍÆËã»ú¿ÆÑ§µÄºÆå«ÐÇ¿ÕÖУ¬C++ÎÞÒÉÊÇÒ»¿Åèè²¾«Ã÷µÄÃ÷ÐÇ¡£ËüÒÔÆä׳´óµÄ»úÄÜ¡¢½Ã½ÝµÄÓï·¨ÒÔ¼°¿çƽ̨µÄ¸öÐÔ£¬Ñ±·þÁËÎÞÊý¿ª·¢Õߣ¬³ÉΪÓÎÏ·¿ª·¢¡¢ÏµÍ³±à³Ì¡¢¸ß»úÄÜÍÆËãµÈ¶à¶àÁìÓòµÄ»ùʯ¡£µ±ÎÒÃǾªÌ¾ÓÚC++µÄ׳´ó֮ʱ£¬ÊÇ·ñÔøºÃÆæ£¬ÕâÃÅ˵»°µÄ»ðÖÖ£¬µ½µ×ÊÇÓÉ˵ãȼµÄÄØ£¿´ð°¸Ö¸ÏòÁËһλÃû½ÐBjarneStroustrupµÄµ¤ÂóÍÆËã»ú¿ÆÑ§¼Ò¡£
¹ÊÊÂÒª´ÓÉÏÊÀ¼Í70Äê´úĩ˵Æð¡£Æäʱ£¬StroustrupÔÚµ¤ÂóµÄ?°Âºú˹´óѧ¹¥¶Á²©Ê¿Ñ§Î»¡£ËûµÄ×êÑз½ÏòÊÇÍÆËã»ú¿ÆÑ§£¬¶øËûËùʹÓõÄ˵»°£¬ÊǸ¡¿äµÄC˵»°¡£C˵»°ÒÔÆä¿¿½üÓ²¼þµÄ¸öÐԺ͸ßЧµÄÖ´ÐпìÂʶøÎÅÃû£¬µ«Óë´ËËüÒ²´æÔÚһЩÏÔÖøµÄ¾ÖÏÞÐÔ¡£¶ÔÓÚ±àд´óÐÍ¡¢¸´ÔÓµÄÈí¼þϵͳ¶øÑÔ£¬C˵»°µÄ½á¹¹»¯±à³Ì·½Ê½ÏÔµÃÁ¦²»´ÓÐÄ£¬ÄÑÒÔÖÎÀíÖØ´óµÄ´úÂë¿â£¬Ò²ÈÝÒ×µ¼ÖÂÊØ»¤ÄÑÌâºÍbugƵ³ö¡£
Stroustrup¶Ô´ËÉîÓÐÌåζ¡£ËûÔÚ׫д²©Ê¿ÂÛÎÄʱ£¬¾ÍÃæ¶Ô×ÅÈôºÎ¸ßЧµØ×éÖ¯ºÍÖÎÀí¸´ÔÓ·¨Ê½µÄ?ÌôÕ½¡£Ëû¿´µ½ÁËC˵»°µÄÀûÒæ£¬µ«Í¬Ê±Ò²°ÍÍûÒ»ÖÖ¿ÉÄÜÒýÈë¸ü¸ß¼¶³éÏó»úÔìµÄ±à³Ì˵»°£¬ÒÔ±ã¸üºÃµØ?Ó¦¶ÔÈÕÒæÔö³¤µÄÈí¼þ¸´ÔÓ¶È¡£ËûµÄÑ۹⣬ÌìÈ»¶øÈ»µØÍ¶ÏòÁËÆäʱ±¸ÊܹØ×¢µÄSimula˵»°¡£
Simula£¬Ò»ÖÖÔÚ60Äê´úÄ©³öÏÖµÄ˵»°£¬ÒýÈëÁË¡°Àࡱ£¨class£©ºÍ¡°¶ÔÏó¡±£¨object£©µÄ¸ÅÏ룬Õâ¾ÍÊǺóÀ´ÃæÏò¶ÔÏó±à³Ì£¨OOP£©µÄ³ûÐΡ£SimulaµÄ³öÏÖ£¬¼«´óµØ¼ò»¯ÁËÄ£¿é»¯Éè¼ÆºÍ´úÂ븴Óã¬Îª¹¹½¨´óÐÍÈí¼þϵͳÌṩÁËеÄ˼·¡£Stroustrup¶ÔSimulaµÄ³éÏóÄÜÁ¦Ó¡ÏóÉî¿Ì£¬ËûÒÔΪ£¬½«SimulaµÄÃæÏò¶ÔÏó˼ÏëÓëC˵»°µÄµ×²ã½ÚÔìÄÜÁ¦Ïà½áºÏ£¬½«Êǽâ¾öÈí¼þ¿ªÆðÊÂÌâµÄÒ»Ìõ¿ÉÐÐ֮·¡£
Ö±½ÓʹÓÃSimulaÒ²´æÔÚÎÊÌâ¡£SimulaµÄÔËÐÐЧÄÜÏà¶Ô½ÏµÍ£¬ÄÑÒÔÂú×ã¶Ô»úÄÜÓм«ÖÂÒªÇóµÄ³¡¾°¡£StroustrupµÄÔ¸¾°ÊÇ´´ÔìÒ»ÖÖ¼ÈÄÜÏíÊÜÃæÏò¶ÔÏó´øÀ´µÄ·½±ã£¬ÓÖÄÜά³ÖC˵»°°ã¸ßЧµÄ˵»°¡£ËûÆðÍ·ÔÚC˵»°µÄ»ù´¡ÉÏ£¬³¢ÊÔÔö³¤SimulaµÄ¸öÐÔ¡£
Õâ²¢·ÇÒ×Ê¡£½«Á½ÖÖ½ØÈ»·ÖÆçµÄ±à³Ì·¶Ê½ÈÚºÏÔÚһ·£¬±ØÒªÉîºñµÄÀíÂÛ¹¦µ×?ºÍ׿ԽµÄʵ¼ÊÄÜÁ¦¡£Stroustrup²¢Ã»ÓÐÑ¡Ôñ´ÓÁãÆðÍ·´´ÔìÒ»ÃÅȫеÄ˵»°£¬¶øÊÇÁí±Ùõè¾¶£¬Ñ¡ÔñÔÚC˵»°µÄ¡°¹Ç¼Ü¡±ÉÏ£¬¼Þ½ÓÃæÏò¶ÔÏóµÄ¡°ÑªÈ⡱¡£ËûÉîÖªC˵»°µÄ׳´óÐÔÃüÁ¦£¬ÒÔ¼°ËüÔÚϵͳ±à³ÌÁìÓòµÄ²»³É´úÌæ?ÐÔ¡£
1979Ä꣬BjarneStroustrupÒÆ¾ÓÃÀ¹ú£¬²ÎÓëÁ˱´¶û³¢ÊÔÊÒ¡£±´¶û³¢ÊÔÊÒ£¬ÕâÆ¬Éú³¤ÁËC˵»°¡¢Unix²Ù×÷ϵͳµÄ±à³ÌÊ¥µØ£¬ÎªStroustrupÌṩÁ˾ø¼ÑµÄ×êÑл·¾³ºÍ×ÊÔ´¡£ÔÚÕâÀËûµÃÒÔÈ«ÉíÐĵØÍ¶Èëµ½ÕâÏî³ä³âÌôÕ½µÄ¹¤×÷Ö®ÖС£ËûÆðÍ·ÔÚC˵»°µÄ»ù´¡ÉÏ£¬Öð²½ÒýÈëÀà¡¢¼Ì³Ó×¢Ð麯ÊýµÈÃæÏò¶ÔÏóµÄÖ÷Ìâ¸ÅÏë¡£
×î³õ£¬Ëû½«ÕâÖÖÐÂ˵»°³ÆÎª¡°CwithClasses¡±£¨´øÀàµÄC£©¡£Õâ¸öÃû×ÖÖ±¹ÛµØ·´Ó³ÁËËüµÄ·¢Ô´ºÍÖ÷Ìâ¸öÐÔ¡£Ëû±àдÁËÒ»¸öÃûΪ¡°Cfront¡±µÄ±à?ÒëÆ÷£¬Õâ¸ö±àÒëÆ÷Äܹ»½«¡°CwithClasses¡±µÄ´úÂëת»»³É³ß¶ÈµÄC´úÂ룬¶øºóÔÙÓÉC±àÒëÆ÷ÌìÉú¿ÉÖ´ÐÐÎļþ¡£
ÕâÖÖ¡°¼ÄÉú¡±ÓÚC˵»°µÄÕ½Êõ£¬¼«´óµØ½µµÍÁËÐÂ˵»°µÄÍÆ¹ãÃż÷£¬Ò²±£ÕÏÁËÆä¼æÈÝÐԺͿÉÒÆÖ²ÐÔ¡£
¡°CwithClasses¡±µÄ³öÏÖ£¬ÔÚ±´¶û³¢ÊÔÊÒÄÚ²¿ÒýÆðÁ˲»Ó׵ķ´Ó³¡£ËüΪ¿ª·¢ÕßÌṩÁËÒ»ÖÖȫеÄ?±à³Ì·½Ê½£¬¿ÉÄܸüÇ峺µØ±í°×?¸´ÔÓµÄÈí¼þÉè¼Æ£¬²¢ÇÒÔÚ»úÄÜÉϲ¢Ã»ÓÐÓÉÓÚÒýÈëÃæÏò¶ÔÏó¶ø´ó·ù¾ÍÒå¡£Stroustrup¼°ÆäͬÊÂÃÇÆðÍ·ÔÚÏÖʵÏîÄ¿ÖÐʹÓÃÕâÃÅ˵»°£¬²¢²»ÐÝÆ¾¾Ý·´À¡½øÐиĽøºÍÃÀÂú¡£
Ëæ×Å˵»°Ö°ÄܵIJ»ÐÝ·á˶ºÍ´úÂëÁ¿µÄ?Ôö³¤£¬¡°CwithClasses¡±ÒѾԶԶ³¬³öÁË¡°´ø?ÀàµÄC¡±µÄÁìÓò¡£Ëü²»½öÔ̺¬ÁËÃæÏò¶ÔÏóµÄ¸öÐÔ£¬»¹½è¼øÁËÆäËû˵»°µÄÀûÒæ£¬²¢ÇÒÔÚC˵»°µÄ»ù´¡ÉϽøÐÐÁË´óÁ¿µÄÀ©´ó¡£ÎªÁ˸üºÃµØ±êʶÕâÃÅÈÕÒæ³ÉÊìµÄ˵»°£¬StroustrupºÍËûµÄÍŶӾö¶¨ÎªÆä¸³ÓèÒ»¸öȫеÄÃû×Ö¡ª¡ªC++¡£
¡°++¡±ÔÚC˵»°ÖÐÊÇ×ÔÔöÔËËã·û£¬ÏóÕ÷×Å¡°ÔÚCµÄ»ù´¡ÉÏÓÐËù¼ÓÇ¿£¬ÓÐËù·¢Õ¹¡±¡£Õâ¸öÃû×Ö¼ò½à¶ø¸»ÓÐÁ¦Á¿£¬Ç¡ÈçÆä·ÖµØ¸ÅÀ¨ÁËC++µÄÐÔÖÊ¡£1983Ä꣬C++Õâ¸öÃû×ÖÕýʽµ®Éú¡£¶ø1985Ä꣬¡¶C++·¨Ê½Éè¼ÆËµ»°¡·³õ°æ£¨Í¨³£±»³ÆÎª¡°C++µÄÊ¥¾¡±£©µÄ³ö°æ£¬±ê־ȡC++×÷ΪһÃŶÀÁ¢µÄ±à³Ì˵»°£¬Õýʽ×ßÉÏÁ˺¹ÇàµÄÎę̀¡£
»ØÊ×C++µÄµ®Éú¹ý³Ì£¬ÎÒÃDz»?ÄÑ·¢ÏÖ£¬BjarneStroustrup²¢·ÇÊÇÒ»¸öƾ¿Õ´´ÔìÕߣ¬Ëû¸üÏñÊÇһλΰ´óµÄÈÚºÏÕߺÍÑݽøÕß¡£ËûÃô¸ÐµØ×½Äõ½?ÁËÆäʱÈí¼þ¿ª·¢Ãæ¶ÔµÄÍ´µã£¬²¢?ÒÔC˵»°Îª»ùʯ£¬ÆæÃîµØÎüÊÕÁËSimulaµÄÃæÏò¶ÔÏ󾫻ª£¬×îÖÕÉú³¤³öÁËC++ÕâßïÃüÐÔµÄ˵»°¡£
ËûµÄÔ¶¼û¸ß¼û¡¢¼á³Ö²»Ð¸µÄÖÂÁ¦£¬ÒÔ¼°¶Ô±à³ÌÒÕÊõµÄÉî¿ÌÀí½â£¬¹²Í¬Æ×дÁËC++µÄ¡°´´ÊÀ¼Í¡±¡£
BjarneStroustrup´´ÔìC++µÄ³õÖÔ£¬ÊÇΪÏàʶ¾ö´óÐÍÈí¼þϵͳµÄ¿ªÆðÊÂÌ⣬¸³Ó迪·¢Õ߸ü׳´óµÄ³éÏóÄÜÁ¦£¬Í¬Ê±ÓÖ²»Ê§C˵»°µÄ¸ßЧ¡£º¹ÇàµÄ³µÂÖÌÏÌÏÏòǰ£¬C++µÄÃüÔËÒ²Ô¶Ô¶³¬³öÁËStroustrup×î³õµÄÉèÏë¡£ÕâÃÅ˵»°£¬ÈçͬÐÔÃüÌåͨ³££¬ÔÚ²»?¶ÏµÄÑݽøºÍÀ©´óÖУ¬Öð²½Ö¦·±Ò¼û¯£¬³ÉΪ±à³ÌÊÀ½çÖв»³É»òȱµÄÒ»²¿ÃÅ¡£
C++µÄÔçÆÚ·¢Õ¹£¬ÖØÒªµÃÒæÓÚ±´¶û³¢ÊÔÊÒµÄÄÚ²¿Ö§³ÖºÍStroustrupÍŶӵijÖÐøÖÂÁ¦¡£ËûÃDz»ÐݵØ?ΪC++Ôö³¤ÐµĸöÐÔ£¬ÓÅ»¯Æä»úÄÜ£¬²¢×«Ð´Óйصļ¼ÊõÎĵµºÍ½Ì²Ä¡£1985Ä꣬¡¶C++·¨Ê½Éè¼ÆËµ»°¡·µÄ³ö°æ£¬Îª¿ª·¢ÕßÌṩÁËÒ»¸öȨÍþµÄ½ø½¨Ö¸ÄÏ£¬Ò²ÎªC++µÄ³ß¶È»¯µì¶¨ÁË»ù´¡¡£
ÈκÎÒ»ÃÅ˵»°µÄ±é¼°£¬¶¼±ØÒª×ß³ö³¢ÊÔÊÒ£¬×ßÏò¸üÁÉÀ«µÄ?Êг¡¡£C++µÄ´«²¼£¬Àë²»¿ªµÚÈý·½±àÒëÆ÷ºÍ¹¤¾ßÁ´µÄÖ§³Ö¡£ÔçÆÚµÄC++±àÒëÆ÷£¬ÈçAT&TµÄcfront£¬ÒÔ¼°ºóÀ´µÄGCC£¨GNUCompilerCollection£©ºÍMicrosoftVisualC++µÈ£¬Îª¿ª·¢ÕßÌṩÁËÔÚ·ÖÆçÆ½Ì¨±àÒëºÍÔËÐÐC++´úÂëµÄ¿ÉÄÜÐÔ¡£
ÕâЩ¹¤¾ßµÄ³öÏÖ£¬¼«´óµØ½µµÍÁËC++µÄ½ø½¨ºÍʹÓÃÃż÷£¬Ê¹Æä¿ÉÄÜ´¥¼°µ½¸ü¿í·ºµÄÓû§ÈºÌå¡£
½øÈëÉÏÊÀ¼Í90Äê´ú£¬Ëæ×ÅÍÆËã»úÓ²¼þ»úÄܵķɿìÌáÉýºÍ»¥ÁªÍøµÄ?¹ÄÆð£¬¶Ô¸ß»úÄÜ¡¢¸ßЧÄÜÈí¼þµÄÐèÒªÈÕÒæÔö³¤¡£C++ƾ½èÆäÔÚ»úÄÜÉϵÄÓÅÊÆ£¬ÔÚÓÎÏ·¿ª·¢¡¢Í¼ÐÎͼÏñ´¦ÖᢽðÈÚÂòÂôϵͳ¡¢²Ù×÷ϵͳµÈÁìÓò´ó·ÅÒì²Ê¡£´ÓÔçÆÚµÄ3DÓÎÏ·ÒýÇæ£¬µ½ºóÀ´µÄ²Ù×÷ϵͳÄںˣ¬ÔÙµ½Èç½ñµÄ×Ô¶¯¼Ýʻϵͳ£¬C++µÄÉíÓ°ÎÞ´¦²»ÔÚ¡£
Óë´Ë£¬C++µÄ³ß¶ÈÒ²ÔÚ²»ÐÝÑݽø¡£1998Ä꣬¹ú¼Ê³ß¶È»¯×éÖ¯£¨ISO£©°ä²¼Á˵ÚÒ»¸öC++¹ú¼Ê³ß¶È£¬¼´C++98¡£Õâ¸ö³ß¶È±ê־ȡC++˵»°µÄÕýʽ¹æ·¶»¯£¬Îª¿çƽ̨¿ª·¢ºÍ´úÂ뻥²Ù×÷ÐÔÌṩÁ˼áʵµÄ±£ÏÕ¡£C++98µÄ³öÏÖ£¬Ò²ÎªºóÐø³ß¶ÈµÄÔì¶©ÌṩÁË»ù´¡?¡£
¶ûºó£¬C++ÿ¸ô¼¸Äê±ã»áÓÀ´Ò»´Î³ÁÒªµÄ?¸üС£2003ÄêµÄC++03£¬¶ÔC++98½øÐÐÁËһЩÓ׵Ľ¨¸ÄºÍ²¹³ä¡£2011Ä꣬C++11µÄ°ä²¼£¬¿°³ÆC++µÄÒ»´Î¡°´ó°æ±¾¸üС±¡£C++11ÒýÈëÁË´óÁ¿¸ïÃüÐÔµÄиöÐÔ£¬¼«´óµØÌáÉýÁË˵»°µÄ±í°×?ÄÜÁ¦ºÍ¿ª·¢Ð§ÄÜ£¬ÀýÈ磺
×Ô¶¯ÀàÐÍÍÆµ¼?(auto)£º¼ò»¯Á˱äÁ¿ÉêÃ÷£¬Ï÷¼õÁËÈßÓà¡£ÁìÓòforÑ»·(range-basedforloop)£ºÊ¹µÃ±éÀúÈÝÆ÷Ô½·¢±ã½Ý¡£Lambda±í°×ʽ(lambdaexpressions)£ºÌṩÁËÔÚ±ØÒªÊ±½ç˵ÄäÃûº¯ÊýµÄ׳´óÄÜÁ¦¡£
ÖÇÄÜÖ¸Õë(smartpointers)£ºÈçstd::unique_ptrºÍstd::shared_ptr£¬ÓÐЧ½â¾öÁËÄÚ´æÖÎÀíÎÊÌ⣬½µµÍÁËÄÚ´æÐ¹Â©µÄ·çÏÕ¡£ÓÒÖµÒýÓúÍÒÆ¶¯ÓïÒå(rvaluereferencesandmovesemantics)£º¼«´ó?µØÌáÉýÁË×ÊÔ´×ªÒÆµÄЧÄÜ£¬³ö¸ñÊÇÔÚ´¦ÖÃһʱ¶ÔÏóʱ¡£
²¢·¢±à³ÌÖ§³Ö(concurrencysupport)£ºÒýÈëÁËstd::threadµÈ£¬Îª¶àÏ̱߳à³ÌÌṩÁËÔÉúÖ§³Ö¡£
C++11µÄ³öÏÖ£¬ÎªC++ÉçÇø×¢ÈëÁËеĻîÁ¦£¬Ò²ÈúܶàÒѾÓÉÓÚC++µÄ¸´ÔÓÐÔ¶øÍû¶øÉúηµÄ¿ª·¢Õß³ÁÐÂʰÆðÁËËü¡£
½ôËæÆäºó£¬C++14¡¢C++17¡¢C++20µÈ³ß¶ÈÒ²Ïà¼Ì°ä²¼£¬Ã¿Ò»´Î¸üж¼´øÀ´ÁËеĸöÐԺ͸Ľø£¬ÀýÈ磺
C++14£ºÒýÈëÁË·ºÐÍlambda¡¢·µ»ØÀàÐÍÍÆµ¼µÈ£¬½øÒ»²½ÌáÉýÁË˵»°µÄ½Ã½ÝÐÔ¡£C++17£ºÔö³¤Á˽ṹ»¯°ó¶¨£¨structuredbindings£©¡¢ifconstexpr¡¢Îļþϵͳ¿âµÈ£¬Ê¹µÃ´úÂëÔ½·¢¼ò½àºÍ׳´ó¡£C++20£ºÄܹ»ËµÊÇC++º¹ÇàÉÏ×î³ÁÒªµÄÒ»´Î¸üÐÂÖ®Ò»£¬ÒýÈëÁ˸ÅÏ루concepts£©¡¢Ä£¿é£¨modules£©¡¢Ð³Ì£¨coroutines£©¡¢ÁìÓò£¨ranges£©µÈ»®Ê±ÆÚµÄиöÐÔ£¬¼«´óµØ¸ÄÉÆÁËC++µÄ¿ª·¢ÂÄÀúºÍ˵»°µÄÕûÌåÉè¼Æ¡£
Èç½ñ£¬C++ÒÀÈ»ÊÇÈ«Çò×îÊÜӽӵıà³Ì?˵»°Ö®Ò»¡£Ëü²»½öÔÚ´«Í³µÄÁìÓò±£?³Ö×Å׳´ó?µÄ¾ºÕùÁ¦£¬»¹ÔÚÈËΪÖÇÄÜ¡¢´óÊý¾Ý¡¢ÎïÁªÍøµÈÐÂÐ˼¼ÊõÁìÓò±íÑÝ×ÅÔ½À´Ô½³ÁÒªµÄ½ÇÉ«¡£¹ÌÈ»C++ÒÔÆä¡°½ø½¨ÇúÏß¾þÇÍ¡±¶øÎÅÃû£¬µ«ÕýÊÇÕâÖÖ¸´ÔÓÐÔ£¬¸³ÓèÁËËüÎÞÓëÂױȵĽýÝÐԺͻúÄÜ¡£
´ÓBjarneStroustrup×î³õÔÚC˵»°»ù´¡ÉÏÉú³¤³öµÄ¡°CwithClasses¡±£¬µ½Èç½ñÖ°ÄÜ׳´ó¡¢±ê?×¼»¯µÄC++20£¬ÕâÃÅ˵»°µÄ½ø»¯Ê·£¬ÊÇÒ»²¿³ä³âÖǻۡ¢Ë÷ÇóºÍ²»ÐÝÍ»ÆÆµÄÊ·Ê«¡£ËüÖ¤ÁËÈ»£¬ÓÅÁ¼µÄ˵»°Éè¼Æ£¬²»½öÔÚÓÚÆä³õʼµÄÓÅÑÅ£¬¸üÔÚÓÚÆäÐÔÃüÁ¦¡ª¡ªÄÜ·ñÔÚʱÆÚµÄº£³±Öв»ÐÝ×ÔÎҸĸÂú×㿪·¢ÕßÈÕÒæÔö³¤µÄÐèÒª¡£
C++µÄ¹ÊÊ£¬ÈÔÔÚ³ÖÐø£¬¶øËüµÄ½«À´£¬ÒÀÈ»³ä³âÎÞÏÞ¿ÉÄÜ¡£