十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深入理解C++ 智能指针std::shared_ptr<二>get()方法

深入理解C++ 智能指针std::shared_ptr<二>get()方法 std::shared_ptr的get()方法是一个非常基础且重要的成员函数它的作用是返回所管理对象的原始指针它的函数原型是T* get() const noexcept;返回指向被管理对象的指针即shared_ptr内部存储的地址。如果shared_ptr为空即不管理任何对象则返回nullptr。该函数是const且noexcept不会修改智能指针的状态也不会影响引用计数。#include iostream #include memory void legacy_print(int* p) { if (p) { std::cout Value: *p std::endl; } else { std::cout Null pointer std::endl; } } int main() { std::shared_ptrint sp std::make_sharedint(42); // 使用 get() 获取原始指针传递给旧式函数 legacy_print(sp.get()); // 输出Value: 42 // 也可以直接用于比较或指针运算 int* raw sp.get(); std::cout Address: raw std::endl; // 重置 shared_ptrraw 变为悬空指针切勿再使用 sp.reset(); // 此时 get() 返回 nullptr legacy_print(sp.get()); // 输出Null pointer // 错误用法不要手动 delete raw 或用它构造新的 shared_ptr // delete raw; // 危险会双重释放 // std::shared_ptrint sp2(raw); // 危险重复管理 return 0; }
返回列表