From 1aa1048deef6f53bef188b593f67f28e79171b97 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Sun, 15 Mar 2020 22:13:26 +0200 Subject: Create 3. weak_ptr.cpp --- Smart_pointers/3. weak_ptr.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Smart_pointers/3. weak_ptr.cpp (limited to 'Smart_pointers/3. weak_ptr.cpp') diff --git a/Smart_pointers/3. weak_ptr.cpp b/Smart_pointers/3. weak_ptr.cpp new file mode 100644 index 0000000..266ae3a --- /dev/null +++ b/Smart_pointers/3. weak_ptr.cpp @@ -0,0 +1,60 @@ +/****************************************************************************** + +Online C++ Compiler. +Code, Compile, Run and Debug C++ program online. +Write your code in this editor and press "Run" button to compile and execute it. + +*******************************************************************************/ + +#include +#include + +using namespace std; + +class Test +{ +public: + Test() + { + cout << "Test()" << endl; + } + Test(const Test& other) + { + cout << "Copy constructor" << endl; + } + Test& operator=(const Test& other) + { + cout << "Assignment operator" << endl; + } + ~Test() + { + cout << "Detructor" << endl; + } + void f() + { + + } + +}; +int main() +{ + + + shared_ptr smart_pointer_1(new Test()); + + cout << smart_pointer_1.get() << endl; //адресът на обекта. + + weak_ptr smart_pointer_2(smart_pointer_1); + + cout << smart_pointer_2.use_count() << endl; // 1 - weak_ptr НЕ участва в бройката на пойнтерите към обектите. + + //smart_pointer_2->f(); ГРЕШКА! + //Това е само за временен достъп! Ако искате да достъпите данните на този пойнтер трябва да го превърнете в shared_ptr!. + + shared_ptr smart_pointer_3 = smart_pointer_2.lock(); + + cout << smart_pointer_1.use_count() << endl;//2 + + smart_pointer_3->f(); // .. и тн. + +} -- cgit v1.3.1-23-gd82d