智能指针

来源:互联网 发布:编程values是什么意思 编辑:程序博客网 时间:2024/09/21 06:32

智能指针

#include "stdafx.h"#include <iostream>using namespace std;#include <memory> //智能指针class A{public:A(){cout << "A()" << endl;}~A(){cout << "~A()" << endl;}void func(){cout << "sdfsfsf" << endl;}};//new A 后的指针 被 ptr托管  不需要再关心delete的问题 //delete 在ptr离开其栈空间的时候发生 //对象的行为表现像一个指针 (重载了-> *)  //对象的行为表现像函数(重载了())class Smt{public:Smt(A* p){ptr = p;}~Smt(){delete ptr;}A* operator->(){return ptr;}A& operator*(){return *ptr;}private:A* ptr;};void foo(){//auto_ptr类模版   auto_ptr<A> 模板类//auto_ptr<A>  ptr(new A); //传参给对象ptr初始化//ptr->func();//(*ptr).func();Smt smt(new A);smt->func(); (*smt).func();}//a.operator+(b);  a+b//a.operator()(b); a()(b); a(b);//a.operator++();  a++;//a.operator->();  a->->func(); a->func(); 进行省略了int _tmain(int argc, _TCHAR* argv[]){foo();return 0;}