码迷,mamicode.com
首页 > 其他好文 > 详细

智能指针的探索

时间:2015-12-16 17:33:15      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:智能指针

//#pragma once
//#include<iostream>
//#include<string>
//using namespace std;
//template<class T>
//class  autoPtr
//{
//public:
//	autoPtr(T* ptr)
//		:_ptr(ptr)
//	{
//	}
//	autoPtr(const autoPtr<T>& ptr)
//		:_ptr(new T(*(ptr._ptr)))
//	{
//		//operator=
//		
//	}
//	autoPtr& operator=(autoPtr<T> ptr)
//	{
//		swap(_ptr,ptr._ptr);
//		return *this;
//	}
//	void Display()
//	{
//		cout << (*_ptr) << endl;
//	}
//	~autoPtr()
//	{
//			delete _ptr;
//	}
//	T& operator*()
//	{
//		assert(_ptr);
//		return *_ptr;
//	}
//
//	T* operator->()
//	{
//		return _ptr;
//	}
//
//	T* GetPtr()
//	{
//		return _ptr;
//	}
//protected:
//	T* _ptr;
//};

//#pragma once
//#include<iostream>
//#include<string>
//template<class T>
//class ScopedPtr
//{
//public:
//	ScopedPtr(T* ptr)
//		:_ptr(ptr)
//	{
//
//	}
//	~ScopedPtr()
//	{
//		delete _ptr;
//	}
//	void Display()
//	{
//	    cout << (*_ptr) << endl;
//	}
//	T& operator*()
//	{
//		//assert(_ptr);
//		return *_ptr;
//	}
//
//	T* operator->()
//	{
//		return _ptr;
//	}
//
//	T* GetPtr()
//	{
//		return _ptr;
//	}
//protected:
//	T* _ptr;
//private:
//	//不让调用
//	ScopedPtr(const ScopedPtr<T>& s);
//	ScopedPtr& operator=(const ScopedPtr<T> s);
//};
//#pragma once
//#include<iostream>
//#include<string>
//class Count;
//template<class T>
//class SharedPtr
//{
//public:
//	SharedPtr()
//		:_ptr(NULL)
//		, _count(NULL)
//	{}
//	SharedPtr(T* ptr)
//		:_ptr(ptr)
//		, _count(new int(1))
//	{}
//	SharedPtr(SharedPtr<T>& s)
//		:_ptr(s._ptr)
//		, _count(s._count)
//	{
//		++(*_count);
//	}
//	SharedPtr& operator=(SharedPtr<T>& s)
//	{
//		Destroy();
//		_ptr = s._ptr;
//		_count = s._count;
//		++s._count;
//		return *this;
//	}
//	~SharedPtr()
//	{
//		Destroy();
//	}
//	void Display()
//	{
//		cout << (*_ptr) << endl;
//	}
//	T& operator*()
//	{
//		//assert(_ptr);
//		return *_ptr;
//	}
//		
//	T* operator->()
//	{
//		return _ptr;
//	}
//		
//	T* GetPtr()
//	{
//		return _ptr;
//	}
//protected:
//	void Destroy()
//	{
//		if (--(*_count) == 0)
//			delete _ptr;
//	}
//protected:
//	T* _ptr;
//	int* _count;
//};



//测试用例
//#include"autoPtr.hpp"
//#include<iostream>
//#include<string>
//using namespace std;
//void Test1()
//{
//	int *p = new int(1);
//	autoPtr<int> p1(p);
//	autoPtr<int> p2(p1);
//	cout << (*p) << endl;
//	p1.Display();
//	p2.Display();
//}
//void Test2()
//{
//	int *p = new int(1);
//	autoPtr<int> p1(p);
//	int *p4= new int(2);
//	autoPtr<int> p3 = p4;
//	p3.Display();
//	p3 = p1;
//	p3.Display();
//}
//void Test3()
//{
//	string *p = new string("abc");
//	autoPtr<string> p1(p);
//	p1.Display();
//	autoPtr<string> p2(p1);
//	p2.Display();
//}
//void Test4()
//{
//	string *p = new string("abc");
//	autoPtr<string> p1(p);
//	p1.Display();
//	string *pst = new string("def");
//	autoPtr<string> p2(pst);
//	p2.Display();
//	autoPtr<string> p3(p1);
//	p3.Display();
//	p3 = p2;
//	p3.Display();
//}
//int main()
//{
//	Test4();
//	system("pause");
//	return 0;
//}

//#include"autoPtr.hpp"
//#include<iostream>
//using namespace std;
//#include<string>
////void Test1()
////{
////	int* p1 = new int(1);
////	ScopedPtr<int> p2(p1);
////	p2.Display();
////	cout << *p2 << endl;
////}
//
//void Test1()
//{
//	int *p1 = new int(1);
//	SharedPtr<int> p2(p1);
//	SharedPtr<int> p3(p2);
//	p2.Display();
//	p3.Display();
//}
//void Test2()
//{
//	int *p1 = new int(1);
//	SharedPtr<int> p2(p1);
//	SharedPtr<int> p3(p2);
//	p3.Display();
//	int *p4 = new int(2);
//	SharedPtr<int> p5(p4);
//	p3=p5;
//	p3.Display();
//}
//void Test3()
//{
//    string *p1 = new string("abc");
//	SharedPtr<string> p2(p1);
//	SharedPtr<string> p3(p2);
//	p3.Display();
//	string *p4 = new string("def");
//	SharedPtr<string> p5(p4);
//	p3 = p5;
//	p3.Display();
//}
//int main()
//{
//	Test3();
//	system("pause");
//	return 0;
//}


本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1725200

智能指针的探索

标签:智能指针

原文地址:http://10541556.blog.51cto.com/10531556/1725200

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!