c_cpp C ++智能指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++智能指针相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string> 

using namespace std;

class Test {
	int i;
public:
	Test(int i) {
		cout << "Test(int i)" << endl;
		this->i = i;
	}
	int value() {
		return i;
	}
	Test() {
		cout << "~Test()" << endl;
	}
};

class Pointer {
	Test* mp;
public:
	Pointer(Test* p = NULL) {
		mp = p;
	}
	Pointer(const Pointer& obj) {
		mp = obj.mp;
		const_cast<Pointer&>(obj).mp = NULL;
	}
	Pointer& operator = (const Pointer& obj) {
		if (this != &obj) {
			delete mp;
			mp = obj.mp;
			const_cast<Pointer&>(obj).mp = NULL;
		}
		return *this;
	}
	Test* operator -> () {
		return mp;
	}
	Test& operator * () {
		return *mp;
	}
	bool isNULL() {
		return (mp == NULL);
	}
	~Pointer() {
		delete mp;
	}
};

int main() {
	Pointer p1 = new Test(0);
	cout << p1->value() << endl;
	Pointer p2 = p1;
	cout << p1.isNULL() << endl;
	cout << p2.isNULL() << endl;
	getchar();
	return 0;
}

以上是关于c_cpp C ++智能指针的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp CPP - 教程015 - 智能指针和多态模板

c_cpp 使用unique_ptr,智能指针

使用 c 库的 C++ 程序 - 将智能指针转换为原始 c 样式指针?

详解C++11智能指针

C/C++知识要点5——智能指针原理及自己定义实现

C/C++学习笔记:智能指针详解