1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // 실험용.cpp : This file contains the 'main' function. Program execution begins and ends there. //
#include "pch.h" #include <iostream> #include <guiddef.h> #include <sstream> #include <iomanip> #include <Windows.h>
class boo1 { public: ~boo1() { std::cout << "boo1 out\n" << std::endl; } public: int lived; };
class boo2 { public: ~boo2() { std::cout << "boo2 out\n"; } public: std::shared_ptr<boo1> ex; };
int main() { boo1* child = new boo1(); { child->lived = 1; boo2* parent = new boo2(); parent->ex = std::shared_ptr<boo1>(child); delete parent; }
std::cout << child->lived << std::endl; } |
child 소멸자를 호출한 적이 없는데 알아서 호출당해줌.
그 이유는 shared_ptr 의 count 는 개네들끼리 하는 것이기 때문임
그래서 child->lived 는 null 같은 값이 나옴
댓글 없음:
댓글 쓰기