C++µÄÀèÃ÷£º´Ó¡°CwithClasses¡±µ½Ò»Î»ÏÈÇýµÄÔ¶¼û
ÔÚÖÚ¶àµÄÅÌËã»ú¿ÆÑ§ÐÇ¿ÕÖУ¬C++ÎÞÒÉÊÇÒ»¿Åèè²ÐÑÄ¿µÄÃ÷ÐÇ¡£µ±ÄãÌáÆð¡°17c.c++¡±Ê±£¬»òÐí»áºÃÆæ£¬ÊÂʵÊÇË£¬ÓÖÊÇÔÚÔõÑùµÄʱ´úÅä¾°Ï£¬²¥ÏÂÁËÕâÃÅǿʢÓïÑÔµÄÖÖ×Ó£¿¹ÊÊÂµÄÆðÔ´£¬Òª×·Ëݵ½ÉÏÊÀ¼ÍÆßÊ®ÄêÔÂÄ©£¬ÄÇʱµÄÅÌËã»úÌìÏÂÕý´¦ÓÚÅÉú³¤µ«ÓÖÂÔÏÔÔÓÂÒµÄʱÆÚ¡£
¹ÊʵÄÖ÷È˹«£¬Êǵ¤ÂóÅÌËã»ú¿ÆÑ§¼ÒBjarneStroustrup£¨²¼À³¶÷¡¤¿ËÄẺ£©£¬Ò»Î»ÔÚ±´¶ûʵÑéÊÒÊÂÇéµÄÏÈÇý¡£ËûÉîÖª£¬ÔÚ¿ª·¢´óÐÍ¡¢ÖØ´óµÄ?ϵͳʱ£¬¼ÈÐèÒªCÓïÑÔµÄЧÂÊºÍµ×²ã¿ØÖÆÄÜÁ¦£¬ÓÖÅÎÔ¸¸ü¸ß¼¶µÄÁýͳºÍÄ£¿é»¯¡£Æäʱ£¬SimulaÓïÑÔµÄÃæÏò¹¤¾ßÌØÕ÷¸øËûÁôÏÂÁËÉî¿ÌÓ¡Ï󣬵«ËûÓÖÒÔΪSimulaµÄЧÂÊȱ·¦ÒÔÖª×ãϵͳ¼¶±à³ÌµÄÐèÇó¡£
ÓÚÊÇ£¬Ò»¸ö´óµ¨µÄÏë·¨ÔÚËûÐÄÖÐÃÈÑ¿£ºÄÜ·ñ½«CÓïÑÔµÄǿʢÓëÃæÏò¹¤¾ß±à³ÌµÄ±ãµ±ÐÔÍŽáÆðÀ´£¿
1979Ä꣬BjarneStroustrup×îÏÈÁËËûµÄ¡°CwithClasses¡±ÏîÄ¿£¬Õâ¼´ÊÇC++×îÔçµÄ³ûÐΡ£Ëû²¢·Ç´Ó?Áã×îÏÈ£¬¶øÊÇÕ¾ÔÚ¾ÞÈ˵ļç°ò?ÉÏ¡ª¡ª¼ÌÐøÁËCÓïÑÔ¾«Á·¡¢¸ßЧµÄÒ²§£¬²¢ÇÉÃîµØÒýÈëÁËÀࣨclass£©µÄ¿´·¨£¬ÒÔ¼°ÓëÖ®Ïà¹ØµÄ·â×°¡¢¼ÌÐøºÍ¶à̬µÈÃæÏò¹¤¾ßµÄ½¹µãÌØÕ÷¡£
Õâ¾ÍÏñÊÇÔÚÒ»¼þÓÅÒìµÄ¹¤ÒµÆ·ÉÏ£¬¾«µñϸ×ÁµØ¼ÓÈëÁ˸ü¶àÈËÐÔ»¯µÄ¹¦Ð§£¬Ê¹ÆäÔ½·¢Ç¿Ê¢ÇÒÒ×ÓÚʹÓá£
¡°CwithClasses¡±µÄ½µÉú£¬²¢·ÇÒ»õí¶ø¾ÍµÄÁé¹âÕ§ÏÖ£¬¶øÊÇBjarneStroustrup¶Ô±à³ÌЧÂÊ¡¢´úÂë¿Éά»¤ÐÔºÍϵͳÐÔÄܵÄÉî¿Ì¶´²ìÓ벻и׷ÇóµÄ½á¾§¡£ËûÏ£Íû´´Á¢Ò»ÖÖÓïÑÔ£¬¼ÈÄÜÈóÌÐòÔ±¡°´¥Ãþµ½Ó²¼þµÄÂö²«¡±£¬ÓÖÄÜÈÃËûÃÇ¡°¹¹½¨³öÐÛΰµÄÈí¼þµîÌᱡ£
ÕâÖÖË«ÖØÄ¿µÄ£¬³ÉΪÁËC++ÔçÆÚÉè¼ÆÖÐ×î½¹µãµÄÇý¶¯Á¦¡£
ÔçÆÚµÄ¡°CwithClasses¡±ÔںܺéÁ÷ƽÉϱ£´æÁËCÓïÑÔµÄÓï·¨ºÍÓïÒ壬ÕâʹµÃ´ÓCÓïÑÔǨáã¹ýÀ´µÄ³ÌÐòÔ±Äܹ»Ïà¶ÔÇáËɵØ?˳Ӧ¡£ÃæÏò¹¤¾ßÌØÕ÷µÄÒýÈ룬ΪÈí¼þ¿ª·¢´øÀ´Á˸ïÃüÐԵĸı䡣Àà³ÉΪÁ˹¹½¨ÖØ´ó³ÌÐòµÄ»ùʯ£¬ÔÊÐí¿ª·¢Õß½«Êý¾ÝºÍ²Ù×÷Êý¾ÝµÄÒªÁì·â×°ÔÚÒ»Æð£¬ÐγÉ×ÔÁ¦µÄÄ£¿é¡£
ÕâÖÖ·â×°ÐÔ²»µ«Ìá¸ßÁË´úÂëµÄ¿É¶ÁÐԺͿÉά»¤ÐÔ£¬»¹¼«´óµØïÔÌÁËÒòÈ«¾Ö±äÁ¿µÈÎÊÌâ´øÀ´µÄ³ÌÐò¹ýʧ¡£
¼ÌÐø»úÖÆÔòÔÊÐí½¨ÉèеÄÀ࣬ÕâЩÐÂÀà¿ÉÒÔ¼ÌÐøÏÖÓÐÀàµÄÊôÐÔºÍÐÐΪ£¬´Ó¶ø×èÖ¹ÁË´úÂëµÄÖØ¸´±àд£¬Ìá¸ßÁË¿ª·¢Ð§ÂÊ¡£¶ø¶à̬ÐÔÔòʹµÃ³ÌÐòÔÚÔËÐÐʱÄܹ»Æ¾Ö¤¹¤¾ßµÄÏÖʵÀàÐÍ×ö³ö²»?ͬµÄÐÐΪ£¬ÕâΪ±àдԽ·¢ÎÞаºÍ¿ÉÀ©Õ¹µÄ´úÂëÌṩÁË¿ÉÄÜ¡£
BjarneStroustrupµÄÔ¶¼û׿ʶÔÚÓÚ£¬ËûÊìϤµ½£¬´¿´â?µÄÁýͳ²¢²»¿É½â¾öËùÓÐÎÊÌâ¡£ËûʼÖÕÇ¿µ÷C++µÄ¡°Á㿪ÏúÁýͳ¡±ÔÔò£¬ÕâÒâζ×ÅÒýÈëµÄÁýÍ³ÌØÕ÷²»Ó¦¸Ã´øÀ´ÌØÁíÍâÔËÐÐÊмÛÇ®¡£ÀýÈ磬Ð麯ÊýËäÈ»ÌṩÁ˶à̬ÐÔ£¬µ«ÆäŲÓûúÖÆÔÚÉè¼ÆÊ±¾Í±»È«ÐÄÓÅ»¯£¬ÒÔÖ»¹ÜïÔÌÐÔÄÜËðʧ¡£
ÕâÖÖ¶ÔÐÔÄܵļ«ÖÂ×·Çó£¬Ê¹µÃC++ÔÚϵͳ±à³Ì?¡¢ÓÎÏ·¿ª·¢¡¢¸ßÐÔÄÜÅÌËãµÈÁìÓòʼÖÕÕ¼ÓÐמÙ×ãÇáÖØµÄְλ¡£
Ëæ×Å¡°CwithClasses¡±µÄÒ»Ö±Éú³¤ºÍÍêÉÆ£¬ËüÖð½¥ÓâÔ½Á˼òÆÓµÄ¡°CµÄÀ©Õ¹¡±µÄÁìÓò£¬Õ¹ÏÖ³ö×ÔÁ¦µÄÓïÑÔ÷ÈÁ¦¡£±´¶ûʵÑéÊÒÒ²ÊìϤµ½ÕâÏîÊÖÒÕµÄDZÁ¦£¬²¢ÔÚ1983Ä꽫ÆäÕýʽÃüÃûΪC++¡£Õâ¸öÃû×Ö×Ô¼º¾ÍÆÄÓÐÉîÒ⣺¡°++¡±ÊÇCÓïÑÔÖÐ×ÔÔöÔËËã·û£¬Ô¢Òâ×ÅC++ÊÇCÓïÑԵġ°Éý¼¶°æ¡±»ò¡°ÔöÇ¿°æ¡±¡£
´Ó¡°CwithClasses¡±µ½C++£¬Õâ²»µ«½öÊÇÃû³ÆµÄ¸Ä±ä£¬¸üÊDZà³ÌÍ·ÄÔµÄÒ»´Î±¼ÌÚ¡£BjarneStroustrupÒÀ¸½Æä׿ԽµÄ¶´²ìÁ¦ºÍ²»Ð¸µÄÆð¾¢£¬ÎªÌìÏÂÁôÏÂÁËÒ»ÃÅÄܹ»¼ÝÔ¦´Óµ×²ãÓ²¼þµ½ÖØ´óÓ¦ÓõÄͨÓñà³ÌÓïÑÔ¡£Ëû²»ÊÇÒ»¸öÔÚÄ»ºóĬĬÎÞÎŵįð²ÝÕߣ¬¶øÊÇһλÔÚ´úÂëÌìÏÂÀÓÃÔ¶¼ûºÍÖǻۣ¬¹´ÀÕ³ö?ÐÛΰÀ¶Í¼µÄÐÞ½¨Ê¦¡£
ËûµÄÿһ´Î˼Ë÷£¬Ã¿Ò»´ÎˢУ¬¶¼ÎªC++×¢ÈëÁËÉúÃüÁ¦£¬²¢ÎªØÊºóµÄÎÞÊý¿ª·¢ÕßÆÌ¾ÍÁËͨÍù¸ßÐÔÄÜ¡¢¸ßЧÂʱà³Ì֮·¡£
BjarneStroustrup´´Á¢C++µÄ³õÖ¾£¬ÊÇΪÏàʶ¾öÏÖʵ¹¤³ÌÖеÄÎÊÌ⣬µ«ËûµÄ×÷Æ·ºÜ¿ì¾ÍÎüÒýÁËÈ«Çò¿ª·¢ÕßµÄ?Ñ۹⡣ÕâÃÅÓïÑÔÒÔÆäǿʢµÄÐÔÄÜ¡¢ÎÞаµÄÁýͳÄÜÁ¦ÒÔ¼°¶Ôµ×²ãÓ²¼þµÄÓÅÒìÖ§³Ö£¬Ñ¸ËÙÔÚÒµ½çո¶ͷ½Ç¡£Ëæ×ÅC++µÄÆÕ±éÓ¦Ó㬲î±ð±àÒëÆ÷Ç徲̨֮¼ä·ºÆðÁËһЩ²»¼æÈݵÄÕ÷Ïó£¬Õâ¸ø¿çƽ̨¿ª·¢´øÀ´ÁËÌôÕ½¡£
ÕýÊÇÔÚÕâÑùµÄÅä¾°Ï£¬C++±ê×¼»¯µÄºôÉùÔ½À´Ô½¸ß¡£±ê×¼»¯Òâζ×ÅΪC++½¨ÉèÒ»Ì×ͳһµÄ¹æ·¶£¬È·±£´úÂëÔÚ²î±ðÇéÐÎϵĿÉÒÆÖ²ÐÔºÍÒ»ÖÂÐÔ¡£1998Ä꣬¹ú¼Ê±ê×¼»¯×éÖ¯£¨ISO£©ºÍ¹ú¼Êµç¹¤Î¯Ô±»á£¨IEC£©ÕýʽÐû²¼Á˵ÚÒ»¸öC++¹ú¼Ê±ê×¼¡ª¡ªISO/IEC14882:1998£¬Ë׳ÆC++98¡£
Õâ¸öÀï³Ì±®Ê½µÄÊÂÎñ£¬±ê¼Ç×ÅC++´ÓÒ»¸öÏà¶Ô×ÔÓÉÉú³¤µÄÓïÑÔ£¬×ßÏòÁ˹淶»¯¡¢ÏµÍ³»¯µÄÉú³¤½×¶Î¡£
C++98±ê×¼µÄÐû²¼£¬ÎªC++ÓïÑÔµÓÚ¨Á˼áʵµÄ»ù´¡£¬ËüÈ·Á¢ÁËÐí¶à½¹µãÌØÕ÷£¬ÈçÄ£°å£¨templates£©¡¢Òì³£´¦Öóͷ££¨exceptionhandling£©¡¢RTTI£¨Run-TimeTypeInformation£©µÈ¡£ÕâÐ©ÌØÕ÷µÄ¼ÓÈ룬¼«´óµØÔöÇ¿ÁËC++µÄ±í´ïÄÜÁ¦ºÍ¹¤³Ìʵ¼ùÄÜÁ¦¡£
Ä£°åµÄÒýÈ룬ʹµÃC++Äܹ»ÊµÏÖÕæÕýµÄ·ºÐͱà³Ì£¬±àд³öÄܹ»´¦Öóͷ£¶àÖÖÊý¾ÝÀàÐ͵ÄͨÓÃËã·¨ºÍÊý¾Ý½á¹¹£¬ÀýÈçSTL£¨StandardTemplateLibrary£©¾ÍÊÇC++98±ê׼ϵÄÓÅÒì´ú±í£¬ËüÌṩÁ˸»ºñµÄÊý¾Ý½á¹¹ºÍËã·¨£¬¼«´óµØÌá¸ßÁË¿ª·¢Ð§ÂÊ¡£
ÊÖÒÕµÄǰ½øÓÀÎÞÖ¹¾³¡£ÔÚC++98Ðû²¼Ö®ºó£¬ÅÌËã»ú¿ÆÑ§ÁìÓòÓ¿ÏÖ³öÐí¶àеÄÍ·ÄÔºÍÊÖÒÕ£¬Í¬Ê±Ò²Ì»Â¶ÁËC++98ÔÚijЩ·½Ãæ±£´æµÄȱ·¦¡£ÎªÁ˸úÉÏʱ´úµÄ²½?·¥£¬C++±ê׼ίԱ»á²¢Ã»ÓÐÍ£ÏÂǰ½øµÄ½Å²½¡£ËæºóµÄÿһ´Î±ê×¼¸üУ¬¶¼ÏñÊÇÒ»´Î¶ÔC++µÄ¡°ÏÖ´ú»¯¡±Ë¢Ð£¬×¢ÈëеĻîÁ¦£¬ÐÞ¸´¾ÉµÄÉ˺ۡ£
C++11£¨ÓÖ³ÆModernC++£©µÄÐû²¼£¬ÊÇC++Éú³¤Àú³ÌÖеÄ?ÓÖÒ»¸öÖ÷ҪתÕ۵㡣ËüÒýÈëÁË´ó×ÚÏÖ´ú»¯µÄÌØÕ÷£¬ÈçÓÒÖµÒýÓã¨rvaluereferences£©¡¢Òƶ¯ÓïÒ壨movesemantics£©¡¢lambda±í´ïʽ£¨lambdaexpressions£©¡¢×Ô¶¯ÀàÐÍÍÆµ¼?£¨autokeyword£©¡¢¹æÄ£forÑ»·£¨range-basedforloops£©µÈµÈ¡£
ÕâÐ©ÌØÕ÷µÄ¼ÓÈ룬¼«´óµØÌáÉýÁËC++µÄ¿ª·¢Ð§ÂʺʹúÂëµÄ¿É¶ÁÐÔ£¬²¢ÇÒÔÚÐÔÄÜÉÏÒ²Óв»ÉÙÓÅ»¯¡£ÀýÈç£¬ÒÆ¶¯ÓïÒåµÄÒýÈ룬ʹµÃC++ÔÚ´¦?Àí´ó×ÚÔÝʱ¹¤¾ßʱ£¬Äܹ»×èÖ¹²»ÐëÒªµÄ¿½±´?£¬´Ó¶øÏÔÖøÌá¸ßÐÔÄÜ¡£lambda±í´ïʽÔòÈú¯Êýʽ±à³ÌµÄÆø¸ÅÔÚC++ÖеÃÒÔʵÏÖ£¬Ê¹µÃ±àд¾«Á·¡¢¸ßЧµÄÄäÃûº¯Êý³ÉΪ¿ÉÄÜ¡£
C++11Ö®ºó£¬C++µÄ±ê?×¼»¯Àú³Ì¼ÓËÙ¡£C++14¡¢C++17¡¢C++20£¬ÒÔÖÂ×îеÄC++23£¬±ê׼ίԱ»áÿÄê»òÁ½ÄêÐû²¼Ò»´Îбê×¼£¬Ò»Ö±µØÎªC++×¢ÈëеÄѪҺ¡£C++14´øÀ´ÁËÈç·ºÐÍlambda¡¢¶þ½øÖÆ×ÖÃæÁ¿µÈˢУ»C++17ÒýÈëÁËÈ´¹¹»¯°ó¶¨£¨structuredbindings£©¡¢ifconstexpr¡¢std::optional¡¢std::variantµÈ£¬½øÒ»²½¼ò»¯ÁË´úÂ룬Ìá¸ßÁËÇå¾²ÐÔ£»C++20¸üÊÇ¿°³ÆÒ»´Î¡°´ó°æ±¾¸üС±£¬ÒýÈëÁËÄ£¿é£¨modules£©¡¢¿´·¨£¨concepts£©¡¢Ð³Ì£¨coroutines£©¡¢¹æÄ££¨ranges£©µÈÇ㸲ÐÔÌØÕ÷£¬¼«´óµØÔöÇ¿ÁËC++µÄ±í´ïÄÜÁ¦ºÍ¹¤³Ì»¯ÄÜÁ¦£¬Ò²ÈÃC++ÔÚ²¢·¢±à³Ì¡¢Òì²½±à³ÌµÈÁìÓò¸ü¾ß¾ºÕùÁ¦¡£
¡°17c.c++¡±Õâ¸ö˵·¨£¬±¾?Éí¿ÉÄܸü¶àµØÖ¸ÏòC++17±ê×¼£¬»òÕß·ºÖ¸2017ÄêǰºóÊ¢ÐеÄC++°æ±¾¡£µ«ÎÞÂÛÔõÑù£¬Ëü¶¼ÊÇC++ÂþÉϽø»¯Ê·ÖеÄÒ»¸öÖ÷Òª½Úµã¡£Ëü´ú±íÁËC++ÔÚÂÄÀúÁËC++98ºÍC++11µÄÏ´Àñºó£¬Ô½·¢³ÉÊì¡¢Ô½·¢Ã÷´ú»¯µÄÃæÄ¿¡£
C++17±ê×¼ÔÚC++11µÄ»ù´¡ÉÏ£¬¼ÌÐøÖÂÁ¦ÓÚÌáÉý¿ª·¢ÕßµÄÉú²ú?Á¦£¬²¢ÒýÈëÁËһЩÄܹ»´øÀ´ÏÔÖøÐÔÄÜÌáÉýºÍ´úÂ뾫Á·ÐÔµÄÌØÕ÷¡£
ÏÖÔÚµÄC++£¬ÔçÒѲ»ÊÇÎôʱBjarneStroustrupËÈË¡°CwithClasses¡±µÄÖÊÆÓÈÝò¡£ËüÊÇÒ»¸öÖØ´ó¶øÖØ´óµÄÉú̬ϵͳ£¬Ò»¸öÒ»Ö±×ÔÎÒˢС¢Óµ±§?δÀ´µÄ±à³ÌÓïÑÔ¡£ËüµÄÃû×Ö±³ºó£¬ÊÇÎÞÊý¿ª·¢Õß¡¢±ê׼ίԱ»á³ÉÔ±ÒÔ¼°ÊÖÒÕϲ»¶ÕßµÄÅäºÏÆð¾¢ºÍÖǻ۽ᾧ¡£
´Ó¡°CwithClasses¡±µÄÃÈÑ¿£¬µ½C++98µÄµÓÚ¨£¬ÔÙµ½C++11¡¢C++17¡¢C++20µÄÏÖ´ú»¯À˳±£¬C++µÄ¹ÊÊ£¬ÊÇÒ»²¿¹ØÓÚÒ»Ö±ÓâÔ½¡¢×·Çó׿ԽµÄÊ·Ê«¡£ËüÒÔÆäÆæÒìµÄ÷ÈÁ¦£¬¼ÌÐøÔÚÈí¼þÌìϵĸ÷¸ö½ÇÂäʩչ×Ų»¿ÉÌæ»»µÄ×÷Ó㬲¢ÇÒ£¬ËüµÄÉúÃüÁ¦£¬ÈÔÔÚÒÔ¾ªÈ˵ÄËÙÂÊ£¬Ò»Á¬È¼ÉÕ¡£