add smart pointers
add polymorphism add destructor & copy constructor add pointer-pointer
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
#include "functions.h"
|
||||
|
||||
@@ -33,5 +34,45 @@ int main()
|
||||
changeIntegerPerPointer(pNumber);
|
||||
changeIntegerPerReference(number);
|
||||
|
||||
// smart pointer
|
||||
// unique_ptr - only one owner exist for the object
|
||||
// shared_ptr - can have multiple owners
|
||||
// weak_ptr - is a loose connection to a shared pointer
|
||||
|
||||
unique_ptr<int> pNumber2 = make_unique<int>(10);
|
||||
*pNumber2 = 100;
|
||||
//unique_ptr<int> pNumber3 = pNumber2; // compiler error- you can't create a copy of an unique pointer
|
||||
unique_ptr<int> pNumber4 = make_unique<int>(*pNumber2);
|
||||
|
||||
shared_ptr<int> pNumber5 = make_shared<int>(10);
|
||||
shared_ptr<int> pNumber6 = pNumber5;
|
||||
|
||||
*pNumber6 = 100;
|
||||
|
||||
pNumber5.reset();
|
||||
|
||||
weak_ptr<int> pNumber7 = pNumber6;
|
||||
//*pNumber7 = 1000; // compiler error, weak pointer has no direct access to a shared pointer, you have to create a new shared pointer
|
||||
|
||||
if (!pNumber7.expired())
|
||||
{
|
||||
shared_ptr<int> tmpSharedNumber = pNumber7.lock();
|
||||
*tmpSharedNumber = 10000;
|
||||
}
|
||||
|
||||
pNumber6.reset();
|
||||
shared_ptr<int> tmpSharedNumber2 = pNumber7.lock();
|
||||
if (tmpSharedNumber2 != nullptr) *tmpSharedNumber2 = 100000;
|
||||
|
||||
// pointer-pointer
|
||||
createInteger(pNumber);
|
||||
createIntegerWithPointerPointer(&pNumber);
|
||||
|
||||
if (pNumber != nullptr)
|
||||
{
|
||||
delete pNumber;
|
||||
pNumber = nullptr;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user