36.智能指针类
1.智能指针类是管理另一个类的对象的释放
class Maker
{
public:
Maker()
{
cout << "无参构造" << endl;
}
void printMaker()
{
cout << "hello Maker" << endl;
}
~Maker()
{
cout << "析构函数" << endl;
}
};
class SmartPoint
{
public:
SmartPoint(Maker *m)
{
this->pMaker = m;
}
~SmartPoint()
{
if (this->pMaker != NULL)
{
cout << "SmartPoint 析构函数" << endl;
delete this->pMaker;
this->pMaker = NULL;
}
}
private:
Maker *pMaker;
};
void test01()
{
Maker *p = new Maker;
SmartPoint sm(p);//栈区,会调用析构函数
//当test01()函数结束时,会调用SmartPoint的析构函数,
//在这析构函数中delete了Maker的对象,会调用Maker的析构函数
}
2.指针运算符重载
//重载指针运算符
Maker *operator->()
{
return this->pMaker;
}
void test02()
{
Maker *p = new Maker;
SmartPoint sm(p);
//sm-> ==> pMaker->
sm->printMaker();
}
3.重载星花
//重载星花
Maker &operator*()
{
return *pMaker;
}
void test02()
{
Maker *p = new Maker;
SmartPoint sm(p);
(*sm).printMaker();
}
程序参考资料
参考资料来源于黑马程序员等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)