C++中常用的智能指针

智能指针是一种C++语言中的类,可以像指针一样引用对象,但可以自动管理对象的内存。C++中有三种常用的智能指针:unique_ptr、shared_ptr和weak_ptr。

  1. unique_ptr:是一种独占所有权的智能指针,即同一时间只能有一个unique_ptr指向某个对象。当unique_ptr超出作用域或被删除时,它所指向的对象也将被自动删除。因此,unique_ptr是一种非常安全和高效的智能指针。例如:
    std::unique_ptr ptr(new int(10));
    std::cout << *ptr << std::endl; // 输出10
    
  2. shared_ptr:是一种共享所有权的智能指针,即可以有多个shared_ptr指向同一个对象。每个shared_ptr都有一个引用计数器,记录当前有多少个shared_ptr指向同一个对象。当引用计数器为0时,对象也将被自动删除。因此,shared_ptr可以避免内存泄漏和重复释放等问题。例如:
    std::shared_ptr ptr1(new int(10));
    std::shared_ptr ptr2 = ptr1;
    std::cout << *ptr1 << " " << *ptr2 << std::endl; // 输出10 10
    
  3. weak_ptr:是一种弱引用的智能指针,即不能直接访问对象,而是需要先将weak_ptr转换为shared_ptr才能访问。weak_ptr通常用于避免shared_ptr之间的循环引用问题。例如

你可能感兴趣的:(C++,数据框架,平台框架,c++,数据结构,架构)