Smart Pointer unique_ptr, shared_ptr, weak_ptr

 #include <iostream>

#include <fstream>
#include<cstdio>
#include<stdio.h>
#include <string>
#include "Header.h";
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>
#include<iomanip>
using namespace std;


class Demo {

public:
    int a, b;
    Demo(int a, int b) {
        this->a = a;
        this->b = b;
    }

    void Display() {
        cout << "a=" << a << "b=" << b;
    }

    ~Demo() {
        cout << "\nDistructor\n";
    }



};



/*

1) int 2 sum  
2) double 2 sum
3) string concat name

*/



int Sum(int a, int b) {

    return (a + b);
}

double Sum(double a, double b) {

    return (a + b);
}



//char* Sum(char* a, char* b) {
//
//
//  return strcat(a, b);//(a+b)
//}




//Enter
int main() {

    char a='a';
    char b='c';

   
   
    cout << "Sum=" << Sum(12, 90)<<endl;
    cout << "Sum=" << Sum(12.0, 90.88) << endl;
    //cout << "Sum=" << Sum(a,b) << endl;


   
    /*unique_ptr<Demo> ptr1 = make_unique<Demo>(12, 8);
    cout << "ptr1\n";
    ptr1->Display();


    unique_ptr<Demo> ptr2 = move(ptr1);

    cout << "\nptr2\n";
    ptr2->Display();

    cout << "ptr1\n";
    ptr1->Display();*/  //error nullptr

    //shared_ptr<Demo> ptr1 = make_shared<Demo>(12, 8);
    //cout << "ptr1\n";
    //ptr1->Display();


    //shared_ptr<Demo> ptr2 = ptr1;

    //cout << "\nptr2\n";
    //ptr2->Display();

    //cout << "ptr1\n";
    //ptr1->Display();  //

    shared_ptr<Demo> ptr1 = make_shared<Demo>(12, 8);  // ptr2 pt3  
    ptr1->Display();

    weak_ptr<Demo> ptr2 = ptr1;

    //====memory deallocate
    ptr1.reset(); //delete

    if (auto r = ptr2.lock()) {
        cout << "Object Live";
    }
    else {
        cout << "Object Delete";
    }





    return 0;
}





Comments

Popular posts from this blog

Dynamic Memory2

Template

MultiLevel