shared_ptr
Tham khảo:
- https://cppdeveloper.com/c-nang-cao/smart-pointers-stdshared_ptr-trong-c/
- https://iamsorush.com/posts/shared-pointer-cpp/
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