0

shared_ptr

Tham khảo:

Ví dụ:

#include <iostream>
#include <memory>
#include <vector>
#include <string>

using namespace std;

struct Student {
  string name;
  int id;
  
  Student(std::string n, int i) : name(n), id(i) {
      std::cout << "[+] Sinh vien " << name << " duoc cap phat.\n";
  }
  
  ~Student() {
      std::cout << "[-] Sinh vien " << name << " bi huy (giai phong bo nho).\n";
  }
};

int main() 
{
  auto sv1 = make_shared<Student> ("A", 1);
  auto sv2 = make_shared<Student> ("B", 2);
  
  // Danh sach
  std::vector<std::shared_ptr<Student>> Lop_I;
  std::vector<std::shared_ptr<Student>> Lop_II;

  Lop_I.push_back(sv1);
  Lop_I.push_back(sv2);

  Lop_II.push_back(sv1);

  std::cout << "So nguoi dang dung chung sv1: " << sv1.use_count() << "\n";

  sv1.reset(); 
  std::cout << "Sau khi sv1.reset(), so nguoi dung chung con lai: " << Lop_I[0].use_count() << "\n";

  std::cout << "--- Ket thuc chuong trinh ---\n";
  return 0;
}

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí