您的位置:首页 > 编程语言 > C语言/C++

C/C++:智能指针原理(运算符重载)、使用auto_ptr<A>

2014-08-04 15:16 531 查看
智能指针:能够自动释放从堆中申请的资源

原理如下:(实现运算符“*”以及‘->’的重载)

1、定义一个类用于狗仔存放数据的对象

classA
{
public:
A(){
cout<<"构造函数"<<endl;
}
~A(){
cout<<"析构函数"<<endl;
}

stringm_str;//m_str用于存放字符串
};


2、定义智能指针类

classPta{
public:
Pta(A*pa):m_pa(pa){}//在初始化列表中分配资源,初始化指针A*m_pa
~Pta()
{
deletem_pa;//在析构函数中释放资源
}

A*operator->(void)const//运算符->重载
{
returnm_pa;}//返回指针

A&operator*(void)const
{
return*m_pa;//返回引用
}
private:
A*m_pa;
};


测试:

intmain()
{
//A*p=newA;
//p->m_str="hello";

Ptapa(newA);
pa->m_str="hello";
cout<<(*pa).m_str<<endl;
auto_ptr<A>pa(newA);
pa->m_str="hello";
cout<<(*pa).m_str<<endl;

}


注意:智能指针类可以使用auto_ptr<classname>obj(newclassname)模板代替
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐