c++鏅鸿兘鎸囬拡鎬庝箞浣跨敤
C++鏅鸿兘鎸囬拡鏄竴绉嶇敤浜庣鐞嗗姩鎬佸垎閰嶇殑鍐呭瓨璧勬簮鐨勫伐鍏凤紝鍙互甯姪闃叉鍐呭瓨娉勬紡鍜屾偓鎸傛寚閽堢瓑闂銆侰++11寮曞叆浜嗕袱绉嶄富瑕佺殑鏅鸿兘鎸囬拡锛歴td::shared_ptr鍜宻td::unique_ptr銆?/p>
-
浣跨敤std::shared_ptr锛?/p>
- 鍖呭惈澶存枃浠讹細
#include <memory>
- 鍒涘缓鏅鸿兘鎸囬拡锛?code>std::shared_ptr<Type> ptr = std::make_shared<Type>(args);
- 浣跨敤鏅鸿兘鎸囬拡锛氬彲浠ュ儚浣跨敤鍘熷鎸囬拡涓€鏍蜂娇鐢ㄦ櫤鑳芥寚閽堬紝渚嬪
ptr->method()
鎴?code>(*ptr).method() - 鍏变韩鎵€鏈夋潈锛氬彲浠ラ€氳繃灏嗘櫤鑳芥寚閽堣祴鍊肩粰鍙︿竴涓櫤鑳芥寚閽堟垨浣跨敤
std::shared_ptr
鐨勬瀯閫犲嚱鏁版潵鍏变韩鎵€鏈夋潈 - 鎵嬪姩閲婃斁鍐呭瓨锛氫笉闇€瑕佹墜鍔ㄩ噴鏀炬櫤鑳芥寚閽堟寚鍚戠殑鍐呭瓨锛屽綋鏅鸿兘鎸囬拡瓒呭嚭鑼冨洿鏃讹紝浼氳嚜鍔ㄩ噴鏀惧唴瀛?/li>
- 鍖呭惈澶存枃浠讹細
-
浣跨敤std::unique_ptr锛?/p>
- 鍖呭惈澶存枃浠讹細
#include <memory>
- 鍒涘缓鏅鸿兘鎸囬拡锛?code>std::unique_ptr<Type> ptr = std::make_unique<Type>(args);
- 浣跨敤鏅鸿兘鎸囬拡锛氬彲浠ュ儚浣跨敤鍘熷鎸囬拡涓€鏍蜂娇鐢ㄦ櫤鑳芥寚閽堬紝渚嬪
ptr->method()
鎴?code>(*ptr).method() - 鐙崰鎵€鏈夋潈锛歴td::unique_ptr鍙兘鎷ユ湁涓€涓寚鍚戝姩鎬佸垎閰嶅唴瀛樼殑鎸囬拡锛屼笉鑳藉叡浜墍鏈夋潈
- 绉诲姩璇箟锛氬彲浠ラ€氳繃std::move灏唖td::unique_ptr鐨勬墍鏈夋潈杞Щ缁欏彟涓€涓猻td::unique_ptr
- 鎵嬪姩閲婃斁鍐呭瓨锛氫笉闇€瑕佹墜鍔ㄩ噴鏀炬櫤鑳芥寚閽堟寚鍚戠殑鍐呭瓨锛屽綋鏅鸿兘鎸囬拡瓒呭嚭鑼冨洿鏃讹紝浼氳嚜鍔ㄩ噴鏀惧唴瀛?/li>
- 鍖呭惈澶存枃浠讹細
闇€瑕佹敞鎰忕殑鏄紝鏅鸿兘鎸囬拡涓嶅簲涓庡師濮嬫寚閽堟贩鍚堜娇鐢紝骞朵笖搴旈伩鍏嶅惊鐜紩鐢ㄣ€傛澶栵紝鍦ㄤ娇鐢ㄦ櫤鑳芥寚閽堟椂锛屽簲閬垮厤鍚戝叾鏋勯€犲嚱鏁颁紶閫掑姩鎬佸垎閰嶇殑鏁扮粍锛屽簲浣跨敤std::vector鎴杝td::array绛夊鍣ㄦ潵绠$悊鍔ㄦ€佸垎閰嶇殑鏁扮粍銆?/p>
相关问答