Website Summary Files Commits Branches @commit @diff @stats
path: root / Smart_pointers / 3. weak_ptr.cpp
diff options
context:
space:
mode:
1 files changed, 0 insertions, 52 deletions
-rw-r--r--Smart_pointers/3. weak_ptr.cpp52
diff --git a/Smart_pointers/3. weak_ptr.cpp b/Smart_pointers/3. weak_ptr.cpp
deleted file mode 100644
index 044985a..0000000
--- a/Smart_pointers/3. weak_ptr.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <iostream>
-#include <memory>
-
-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<Test> smart_pointer_1(new Test());
-
- cout << smart_pointer_1.get() << endl; //адресът на обекта.
-
- weak_ptr<Test> smart_pointer_2(smart_pointer_1);
-
- cout << smart_pointer_2.use_count() << endl; // 1 - weak_ptr НЕ участва в бройката на пойнтерите към обектите.
-
- //smart_pointer_2->f(); ГРЕШКА!
- //Това е само за временно пазане на адреса! НЕ МОЖЕМ да достъпим данните. Ако искате да достъпите данните на този пойнтер трябва да го превърнете(заключте) в shared_ptr!.
-
- shared_ptr<Test> smart_pointer_3 = smart_pointer_2.lock(); //.lock() връща shared_ptr към обекта.
-
- cout << smart_pointer_1.use_count() << endl;//2
-
- smart_pointer_3->f(); // .. и тн.
-
-}