ÔÚÅÌËã»ú¿ÆÑ§µÄÖÚ¶àÐÇ¿ÕÖУ¬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¼°ÆäͬÊÂÃÇ×îÏÈÔÚÏÖʵÏîÄ¿ÖÐÔËÓÃÕâÃÅÓïÑÔ£¬²¢Ò»Ö±Æ¾Ö¤·´Ïì¾ÙÐÐˢкÍÍêÉÆ¡£
Ëæ×ÅÓïÑÔ¹¦Ð§µÄÒ»Ö±¸»ºñºÍ´úÂëÁ¿µÄÔöÌí£¬¡°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ÍŶӵÄÒ»Á¬Æð¾¢¡£ËûÃÇÒ»Ö±µØÎª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++µÄ¹ÊÊ£¬ÈÔÔÚ¼ÌÐø£¬¶øËüµÄδÀ´£¬ÒÀÈ»³äÂúÎÞÏÞ¿ÉÄÜ¡£