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
Post a Comment