17c.c++²¢·ÇÒ»ÈËÖ®±Ê±Ü¿ÓÖ¸ÄÏ£º¸ßƵÎóÇøÓëÕýÈ·´ò¿ª·½Ê½

À´Ô´£ºÖ¤È¯Ê±±¨Íø×÷Õߣº
×ÖºÅ

½ÌÓýÓë´«³Ð

C++µÄ½ÌÓýºÍ´«³ÐͬÑùÊǼ¯ÌåÖǻ۵ÄÖØÒª²¿·Ö¡£ÔÚÈ«Çò¸÷´ó¸ßУºÍÅàѵ»ú¹¹£¬C++¿Î³Ì±»¹ã·º½ÌÊÚ£¬ÅàÑøÁËÒ»´úÓÖÒ»´úµÄ¼ÆËã»ú¿ÆÑ§È˲Å¡£ÕâЩѧ###½ÌÓýÓë´«³Ð

ÔÚÈ«Çò¸÷´ó¸ßУºÍÅàѵ»ú¹¹£¬C++¿Î³Ì±»¹ã·º½ÌÊÚ£¬ÅàÑøÁËÒ»´úÓÖÒ»´úµÄ¼ÆËã»ú¿ÆÑ§È˲Å¡£C++²»½öÊǼÆËã»ú¿ÆÑ§ÈëÃŵľ­µäÓïÑÔÖ®Ò»£¬¸üÊÇÁË½â¼ÆËã»úµ×²ã¹¤×÷Ô­ÀíµÄÖØÒª¹¤¾ß¡£ÔÚ½ÌÓý¹ý³ÌÖУ¬C++½Ì²ÄºÍ¿Î³ÌÄÚÈݲ»¶Ï¸üУ¬ÒÔ·´Ó³×îеļ¼Êõ·¢Õ¹ºÍÐÐÒµÐèÇó¡£

ÉîÈëÀí½â¶à̬ºÍÐ麯Êý

¶à̬ÊÇÃæÏò¶ÔÏó±à³ÌµÄºËÐÄÌØÐÔÖ®Ò»£¬C++ͨ¹ý¼Ì³Ð?ºÍÐ麯ÊýʵÏÖ¶à̬¡£

Ð麯Êý£¨VirtualFunction£©£ºÔÚ»ùÀàÖÐÉùÃ÷ΪÐ麯ÊýµÄº¯Êý£¬¿ÉÒÔÔÚÅÉÉúÀàÖб»ÖØÐ´¡£ÕâʹµÃ³ÌÐò¿ÉÒÔÔÚÔËÐÐʱ¸ù¾Ýʵ¼Ê¶ÔÏóµÄÀàÐ͵÷ÓÃÕýÈ·µÄº¯Êý¡£

Ðé±í£¨V-Table£©£ºC++µ×²ãͨ¹ýÐé±íʵÏÖÐ麯ÊýµÄ¶à̬ÐÔ¡£Ã¿¸ö°üº¬Ð麯ÊýµÄÀà¶¼»áÓÐÒ»¸öÓëÖ®¹ØÁªµÄÐé±í¡£

½â¾ö·½·¨£ºÔÚÉè¼ÆÀà²ã´Î½á¹¹Ê±£¬¾¡Á¿Ê¹ÓÃÐ麯ÊýºÍ´¿Ð麯Êý£¨PureVirtualFunction£©£¬±ÜÃâÀàµÄñîºÏ¶È¹ý¸ß£¬Ìá¸ß´úÂëµÄ¿ÉÀ©Õ¹ÐÔ¡£

Ó°ÏìÓëδÀ´

17c.c++¶ÔÏÖ´ú¼ÆËã»ú¿ÆÑ§µÄÓ°ÏìÊÇÉîÔ¶µÄ¡£Ëü²»½öËÜÔìÁËÈí¼þ¿ª·¢µÄ·½Ïò£¬»¹¶ÔÕû¸ö¼¼ÊõÐÐÒµ²úÉúÁ˹㷺ӰÏ졣δÀ´£¬Ëæ×żÆËã»ú¼¼ÊõµÄ?½øÒ»²½·¢Õ¹£¬17c.c++½«¼ÌÐøÔÚеÄÁìÓòÖз¢»Ó×÷Óã¬ÎªÈËÀàµÄ¿Æ¼¼½ø²½¹±Ï×Á¦Á¿¡£

17c.c++²¢·ÇÒ»ÈËÖ®±Ê£¬¶øÊÇÒ»¸ö¼¯ÌåÖǻ۵Ľᾧ¡£ËüµÄµ®ÉúºÍ·¢Õ¹£¬Àë²»¿ªÎÞÊý¿ª·¢ÕߺÍÑо¿ÈËÔ±µÄ²»Ð¸Å¬Á¦ºÍ·îÏס£Ëü²»½öÍÆ¶¯Á˼¼Êõ½ø²½£¬»¹ÎªÈ«ÇòµÄ¼ÆËã»ú¿ÆÑ§·¢Õ¹×ö³öÁ˾޴ó¹±Ïס£ÔÚÕâÌõ̽Ë÷¼ÆËã»ú¿ÆÑ§µÄµÀ·ÉÏ£¬17c.c++½«¼ÌÐøÒýÁìÎÒÃÇǰÐУ¬´øÀ´¸ü¶àµÄ´´ÐºͿÉÄÜÐÔ¡£

ÔÚ̽Ë÷17c.c++µÄÊÀ½çʱ£¬ÎÒÃDz»½öÊÇÔÚÐÀÉÍÒ»Ãűà³ÌÓïÑÔµÄ÷ÈÁ¦£¬¸üÊÇÔÚÌåÑéÒ»¸ö¼¯¶àÈËÖÇ»ÛÓÚÒ»ÉíµÄºêΰ¹¤³Ì¡£±¾ÎĽ«´øÄúÉîÈëÁ˽âÕâһΰ´óµÄÏîÄ¿£¬½ÒʾÆä±³ºóµÄ¹ÊʺÍÓ°Ï죬̽ÌÖËüÈçºÎ³ÉΪÏÖ´ú¼ÆËã»ú¿ÆÑ§µÄÖØÒª×é³É²¿·Ö¡£

Ó°ÏìÓëδÀ´

17c.c++¶ÔÏÖ´ú¼ÆËã»ú¿ÆÑ§µÄÓ°ÏìÊÇÉîÔ¶µÄ¡£Ëü²»½öËÜÔìÁËÈí¼þ¿ª·¢µÄ·½Ïò£¬»¹¶ÔÕû¸ö¼¼ÊõÐÐÒµ²úÉúÁ˹㷺ӰÏ졣δÀ´£¬Ëæ×żÆËã»ú¼¼ÊõµÄ½øÒ»²½·¢Õ¹£¬17c.c++½«¼ÌÐøÔÚеÄÁìÓòÖз¢»Ó×÷Óã¬ÎªÈËÀàµÄ¿Æ¼¼½ø²½¹±Ï×Á¦Á¿¡£

17c.c++²¢·ÇÒ»ÈËÖ®±Ê£¬¶øÊÇÒ»¸ö¼¯ÌåÖǻ۵Ľᾧ¡£ËüµÄµ®ÉúºÍ·¢Õ¹£¬Àë²»¿ªÎÞÊý¿ª·¢ÕߺÍÑо¿ÈËÔ±µÄ²»Ð¸Å¬Á¦ºÍ·îÏס£Ëü²»½öÍÆ¶¯Á˼¼Êõ½ø²½£¬»¹ÎªÈ«ÇòµÄ¼ÆËã»ú¿ÆÑ§·¢Õ¹×ö³öÁ˾޴ó¹±Ïס£ÔÚÕâÌõ̽Ë÷¼ÆËã»ú¿ÆÑ§µÄµÀ·ÉÏ£¬17c.c++½«¼ÌÐøÒýÁìÎÒÃÇǰÐУ¬´øÀ´¸ü¶àµÄ´´ÐºͿÉÄÜÐÔ¡£

¸ßУ½ÌÓý

ÔÚ¸ßУ½ÌÓýÖУ¬C++¿Î³Ìͨ³£º­¸Ç´Ó»ù´¡±à³Ìµ½¸ß¼¶Ó¦ÓõĹ㷺ÄÚÈÝ¡£ÎÞÂÛÊǼÆËã»ú¿ÆÑ§Óë¼¼Êõרҵ£¬»¹ÊÇÈí¼þ¹¤³Ì¡¢ÐÅÏ¢¼¼ÊõµÈÏà¹Ø×¨Òµ£¬C++¶¼ÊDZØÐ޿γÌÖ®Ò»¡£½ÌÊÚÃÇͨ¹ýC++¿Î³Ì²»½ö½ÌÊÚѧÉú±à³Ì¼¼ÄÜ£¬»¹ÈÃËûÃÇÁË½â¼ÆËã»úϵͳµÄµ×²ã¹¤×÷Ô­Àí£¬Õâ¶ÔÓÚËûÃÇδÀ´µÄÖ°Òµ·¢Õ¹¾ßÓÐÖØÒªÒâÒå¡£

¶ÔÄÚ´æ¹ÜÀíµÄÎó½â

C++ÊÇÒ»ÃÅÐèÒªÊÖ¶¯¹ÜÀíÄÚ´æµÄÓïÑÔ¡£Ðí¶à³õѧÕßÍùÍù»áÒòΪ¶ÔÄÚ´æ?¹ÜÀíµÄ²»Àí½â¶ø·¸´í¡£³£¼ûµÄ´íÎó°üÀ¨£º

Ðü¿ÕÖ¸Õ루DanglingPointer£©£ºÔÚÊÍ·ÅÄÚ´æÖ®ºó£¬Èç¹û»¹³ÖÓÐÖ¸Ïò¸ÃÄÚ´æµÄÖ¸Õ룬Õâ¾Í»áµ¼ÖÂÐü¿ÕÖ¸Õë¡£Ðü¿ÕÖ¸Õë¿ÉÄÜ»áÒý·¢Î´¶¨ÒåÐÐΪ¡£

ÄÚ´æÐ¹Â©£¨MemoryLeak£©£ºµ±³ÌÐòÔÚÊÍ·ÅÄÚ´æÊ±£¬Íü¼Ç»òÕßûÓÐÊÍ·ÅÄڴ棬µ¼ÖÂÄÚ´æÎÞ·¨±»ÔÙ´ÎʹÓá£

Ë«ÖØÊÍ·Å£¨DoubleFree£©£ºÔÚÊÍ·ÅÄÚ´æºó£¬Ôٴγ¢ÊÔÊÍ·Åͬһ¿éÄڴ棬ÕâÊÇÒ»ÖÖÖÂÃüµÄ´íÎó¡£

½â¾ö·½·¨£º½¨Ò龡Á¿Ê¹Óñê×¼¿âÖеÄÈÝÆ÷£¨Èçvector¡¢listµÈ£©ºÍÖÇÄÜÖ¸Õ루Èçstd::uniqueptr¡¢std::sharedptrµÈ£©£¬ÕâЩ¹¤¾ßÄܹ»°ïÖúÄã¸üºÃµØ¹ÜÀíÄڴ棬±ÜÃâ³£¼ûµÄÄÚ´æ¹ÜÀíÎÊÌâ¡£

ÀýÈ磺

#includevoidexample(){std::unique_ptrptr=std::make_unique(10);std::shared_ptrshared_ptr=std::make_shared(20);}

½â¾ö·½·¨£ºÔÚÏÖ´úC++±à³ÌÖУ¬¾¡Á¿Ê¹ÓÃÖÇÄÜÖ¸Õë´úÌæÂãÖ¸Õ룬Ìá¸ß´úÂëµÄ°²È«ÐԺͿÉά»¤ÐÔ¡£

У¶Ô£º³ÂÊçׯ(p6mu9CWFoIx7YFddy4eQTuEboRc9VR7b9b)

ÔðÈα༭£º ÁõÐÀ
ΪÄãÍÆ¼ö
Óû§ÆÀÂÛ
µÇ¼ºó¿ÉÒÔ·¢ÑÔ
ÍøÓÑÆÀÂÛ½ö¹©Æä±í´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷֤ȯʱ±¨Á¢³¡
ÔÝÎÞÆÀÂÛ