您的位置:首页 > 其它

智能指针weak_ptr解决循环依赖问题

2016-09-28 15:11 651 查看
#include <iostream>
#include <memory>

class Woman;
class Man{
private:
std::weak_ptr<Woman> _wife;
//std::shared_ptr<Woman> _wife;
public:
void setWife(std::shared_ptr<Woman> &woman){
_wife = woman;
}

void doSomthing(){
if (_wife.lock()){
}
}

~Man(){
std::cout << "kill man\n";
}
};

class Woman{
private:
//std::weak_ptr<Man> _husband;
std::shared_ptr<Man> _husband;
public:
void setHusband(std::shared_ptr<Man> &man){
_husband = man;
}
~Woman(){
std::cout << "kill woman\n";
}
};

int main()
{
std::shared_ptr<Man> m(new Man());
std::shared_ptr<Woman> w(new Woman());

if (m && w)
{
m->setWife(w);
w->setHusband(m);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: