SharedPtr-cpp03/main.cpp

54 lines
1.3 KiB
C++
Raw Permalink Normal View History

2017-04-06 09:35:02 +00:00
#include "SmartPtr.h"
2017-03-31 12:56:22 +00:00
#include <iostream>
#include <vector>
int main()
{
2017-04-06 09:35:02 +00:00
SmartPtr<int> s;
SmartPtr<int> x = SmartPtr<int>(new int(5));
SmartPtr<int> y(x);
2017-03-31 12:56:22 +00:00
s = x;
std::cout<<*x.get()<<std::endl;
std::cout<<*y.get()<<std::endl;
2017-04-06 09:35:02 +00:00
std::cout<<*x<<std::endl;
std::cout<<*y<<std::endl;
2017-03-31 12:56:22 +00:00
y.reset(NULL);
2017-04-06 09:35:02 +00:00
SmartPtr<int> R = SmartPtr<int>(new int(15));
2017-03-31 12:56:22 +00:00
std::cout<<*R.get()<<std::endl;
delete R.release();
2017-04-06 09:35:02 +00:00
SmartPtr<int> T = SmartPtr<int>(new int(25));
SmartPtr<int> U(T);
2017-03-31 12:56:22 +00:00
std::cout<<*U.get()<<std::endl;
2017-04-06 09:35:02 +00:00
std::vector<std::vector<std::string> > vec(1,std::vector<std::string>(10));
//vector
std::vector<SmartPtr<int> > myvec;
for(long i = 0; i < 10; i++)
{
myvec.push_back(SmartPtr<int>(new int(i)));
std::cout<<*myvec[i]<<"\t";
}
std::cout<<std::endl;
const std::vector<int*> myvec_raw = SmartPtr<int>::GetRawPtrContainer(myvec);
for(long i = 0; i < myvec_raw.size(); i++)
{
const int* const ptr = myvec_raw[i];
std::cout<<*ptr<<"\t";
}
std::cout<<std::endl;
int* ptr = new int(2);
int& i = *ptr;
std::cout<<i<<std::endl; //prints 2
ptr = new int(3);
std::cout<<*ptr<<std::endl; //prints 3
std::cout<<i<<std::endl; //still prints 2!
std::cout<<"End program"<<std::endl;
2017-03-31 12:56:22 +00:00
return 0;
}