ÖÇÄÜÖ¸ÕëÊÇÏÖ´úC++±à?³ÌµÄÍÆ¼öʵ¼ù£¬¿ÉÒÔ×Ô¶¯¹ÜÀíÄÚ´æ?£¬±ÜÃâÄÚ´æÐ¹Â©ºÍÐü¿ÕÖ¸Õë¡£
std::unique_ptr£º¶ÀÕ¼ËùÓÐȨµÄÖÇÄÜÖ¸Õ룬ÊÊÓÃÓÚµ¥¶ÀÓµÓеÄ×ÊÔ´¡£
std::shared_ptr£º¹²ÏíËùÓÐȨµÄÖÇÄÜÖ¸Õ룬ÊÊÓÃÓÚ¶à¸ö¶ÔÏó¹²Ïí×ÊԴʱʹÓá£
std::weak_ptr£ºÈõÒýÓ㬲»»áÓ°Ïì¶ÔÏóµÄÉúÃüÖÜÆÚ£¬ÓÃÓÚ·Àֹѻ·ÒýÓá£
ÔÚC++±à³ÌµÄµÀ?·ÉÏ£¬Ðí¶à³õѧÕߺÍÖм¶¿ª·¢Õß¶¼»áÓöµ½¸÷ÖÖ¸÷ÑùµÄÎóÇøºÍÀ§»ó¡£C++ÊÇһß´ÔÓÇÒÇ¿´óµÄ±à³ÌÓïÑÔ£¬ÕÆÎÕËü²»½öÐèÒªÉîÈëµÄÀí½âÓïÑÔ±¾Éí£¬»¹ÐèÒª¾ÑéºÍÖǻۡ£±¾ÎÄ¡¶17c.c++:²¢·ÇÒ»ÈËÖ®±Ê±Ü¿ÓÖ¸ÄÏ£º¸ßƵÎóÇøÓëÕýÈ·´ò¿ª·½Ê½¡·½«ÎªÄú½Ò¿ªC++±à³ÌµÄ¼¸´ó¸ßƵÎóÇø£¬²¢ÌṩһЩʵÓõļ¼Çɺͷ½·¨£¬°ïÖúÄúÔÚC++±à³ÌµÄÂóÌÖÐ˳Àû±Ü¿ª¿Ó¶´£¬ÕýÈ·´ò¿ª±à³ÌµÄ´óÃÅ¡£
RAII£¨ResourceAcquisitionIsInitialization£©ÊÇC++ÖеÄÒ»ÖÖ×ÊÔ´¹ÜÀíģʽ¡£ËüÖ¸µÄÊÇÔÚ×ÊÔ´µÄ»ñȡʱ¾Í³õʼ»¯¸Ã×ÊÔ´£¬²¢ÔÚ×ÊÔ´µÄÉúÃüÖÜÆÚ½áÊøÊ±½øÐÐÊÍ·Å¡£RAIIͨ¹ýÓë¶ÔÏóµÄÉúÃüÖÜÆÚ°ó¶¨×ÊÔ´¹ÜÀí£¬±ÜÃâÁËÊÖ¶¯¹ÜÀí×ÊÔ´µÄÂé·³¡£
17c.c++¶ÔÏÖ´ú¼ÆËã»ú¿ÆÑ§µÄÓ°ÏìÊÇÉîÔ¶µÄ¡£Ëü²»½öËÜÔìÁËÈí¼þ¿ª·¢µÄ?·½Ïò£¬»¹¶ÔÕû¸ö¼¼ÊõÐÐÒµ²úÉúÁ˹㷺ӰÏ졣δÀ´£¬Ëæ×żÆËã»ú¼¼ÊõµÄ½øÒ»²½·¢Õ¹£¬17c.c++½«¼ÌÐøÔÚеÄÁìÓòÖз¢»Ó×÷Óã¬ÎªÈËÀàµÄ¿Æ¼¼½ø²½¹±Ï×Á¦Á¿¡£
17c.c++²¢·ÇÒ»ÈËÖ®±Ê£¬¶øÊÇÒ»¸ö¼¯ÌåÖǻ۵Ľᾧ¡£ËüµÄµ®ÉúºÍ·¢Õ¹£¬Àë²»¿ªÎÞÊý¿ª·¢ÕߺÍÑо¿ÈËÔ±µÄ²»Ð¸Å¬Á¦ºÍ·îÏס£Ëü²»½öÍÆ¶¯Á˼¼Êõ½ø²½£¬»¹ÎªÈ«ÇòµÄ¼ÆËã»ú¿ÆÑ§·¢Õ¹×ö³öÁ˾޴ó¹±Ïס£ÔÚÕâÌõ̽Ë÷¼ÆËã»ú¿ÆÑ§µÄ?µÀ·ÉÏ£¬17c.c++½«¼ÌÐøÒýÁìÎÒÃÇǰÐУ¬´øÀ´¸ü¶àµÄ´´ÐºͿÉÄÜÐÔ¡£
#includevoidreadFile(conststd::string&filename){std::ifstreamfile(filename);if(!file.is_open()){throwstd::runtime_error("Failedtoopenfile");}std::stringline;while(std::getline(file,line)){std::cout<
ÔÚÉÏÊö´úÂëÖУ¬Îļþ¶ÔÏóÔÚº¯Êýµ÷ÓÃʱ±»³õʼ»¯£¬Îļþ¹Ø±ÕʱÓÉÎö¹¹º¯Êý×Ô¶¯µ÷Óã¬ÕâÊÇRAIIµÄµäÐÍÓ¦Óá£
У¶Ô£º·½¿É³É