概述
为了对分配到heap的对象进行生命周期控制(new方法创建的对象,假设为类Entity),需要用到智能指针类(假设为ScopePtr)。该类封装了一个指针,指针指向类型为要控制的类。
#include <iostream>
class Entity{
public:
int x;
public:
void Print() const {
std::cout << "Hello" <<std::endl;
}
};
class ScopePtr{
private:
Entity* m_Obj;
public:
ScopePtr(Entity* entity)
: m_Obj(entity){
}
~ScopePtr(){
delete m_Obj;
}
};
int main(){
ScopePtr entity = new Entity();
std::cin.get();
}
当需要创建Entity对象时,一般不使用Entity指定类型,而是用ScopePtr。这样可以实现对Entity类型对象的生命周期管理。
ScopePtr entity = new Entity();
但是如果需要调用Entity的类成员方法时,无法如下方法:
entity->fun();
这样使得代码不够简洁,可以采用复写->符号来处理,在ScopePtr类中添加如下方法:
Entity* operator->(){
return m_Obj;
}
这样,就可以直接使用上述写法,完整代码如下:
#include <iostream>
class Entity{
public:
int x;
public:
void Print() const {
std::cout << "Hello" <<std::endl;
}
};
class ScopePtr{
private:
Entity* m_Obj;
public:
ScopePtr(Entity* entity)
: m_Obj(entity){
}
~ScopePtr(){
delete m_Obj;
}
Entity* operator->(){
return m_Obj;
}
};
int main(){
ScopePtr entity = new Entity();
entity->Print();
std::cin.get();
}
最后
以上就是缥缈指甲油为你收集整理的c++智能指针对象直接调用封装类的成员方法的全部内容,希望文章能够帮你解决c++智能指针对象直接调用封装类的成员方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复