get函数是C++中shared_ptr中提供的一个方法,可以通过它获取智能指针所指向的对象,它返回一个指向投射对象的原生指针。 可以使用get函数获取shared_ptr指向的资源,而不必担心资源的回收。用这个函数可以轻松访问智能指针指向的对象,而不用关心这个智能指针的生命周期。 使用get函数前,需要先判断智能指针指向的资源是否已经...
process(shared_ptr<int>(p));//正确,创建 p 的临时拷贝,p 中的引用计数会增加。process(shared_ptr<int>(p.get()));//有问题 p.get()返回 p 所管理的动态内存的内置指针,使用该指针初始化一个临时的shared_ptr,离开process后动态内存会被释放,后面对 p 的使用存在危险。 auto sp = make_shared<int...
shared_prt类的get函数返回一个内置指针,指向智能指针所管理的对象 此函数的设计情况:我们需要向不能使用智能指针的代码传递一个内置指针 get函数将内存的访问权限传递给一个指针,但是之后代码不会delete该内存的情况下,对get函数的使用才是最安全的 永远不要用get初始化另一个智能指针或者为另一个智能指针赋值 share...
Ty *get() const; 备注 成员函数返回特定资源的地址。 如果对象会拥有资源则返回0。 示例 复制 // std_tr1__memory__shared_ptr_get.cpp // compile with: /EHsc #include <memory> #include <iostream> int main() { std::shared_ptr<int> sp0; std::shared_ptr<int> sp1(new int(5)); std...
operator->,表示返回指向存储指针所指向的对象的指针,以便访问其中一个成员。跟get函数一样的效果。 示例1:shared_ptr的基础应用: #include <iostream> #include <memory> // 共享指针必须要包含的头文件 using namespace std; int main() { // 最好使用make_shared创建共享指针, ...
可以通过将get()函数的返回值与nullptr进行比较,来判断shared_ptr<>是否为空。示例代码如下: 代码语言:cpp 复制 std::shared_ptr<int> ptr = std::make_shared<int>(10); if (ptr.get() != nullptr) { // shared_ptr<>不为空 } else { // shared_ptr<>为空 } 使用bool()操作符重载:...
std::cout << "析构函数被调用!\n"; } public: shared_ptr<tester> sget() { return shared_ptr<tester>(this); } }; int main() { tester t; shared_ptr<tester> sp = t.sget(); // … return 0; } 也将导致两次释放t对象破坏堆栈,一次是出栈时析构,一次就是shared_ptr析构。若有这种...
shared_ptr 有一个 get 方法,用于获取它所指向的指针。还有一个 data 方法,用于获取指针所指向的对象的值。 1. get 方法 get 方法返回一个指向底层对象的指针。这个指针的类型与 shared_ptr 的类型相同,但是它不具有引用计数功能。这意味着,如果对 get 方法返回的指针进行复制或赋值操作,不会影响 shared_ptr ...
get函数是当保存的指针有可能为空时(这时 operator* 和 operator-> 都会导致未定义行为)获取它的最好办法。注意,你也可以使用隐式布尔类型转换来测试shared_ptr是否包含有效指针。这个函数不会抛出异常。bool unique() const; 这个函数在shared_ptr是它所保存指针的唯一拥有者时返回true;否则返回false。 unique不会...
get:返回指向被管理对象的指针,不建议使用 reset:替换被管理的对象,释放原来管理的资源,管理新的资源 release:shared_ptr不提供解除智能指针和资源管理关系的函数 swap:交换被管理对象的所有权 operator bool() const:检查是否有关联的被管理对象 重载operator*,operator->,访问被管理的对象 ...