C++ 智能指针生成工厂make_shared
2013-07-06 12:36
197 查看
#include <string>
#include <boost/make_shared.hpp>
#include <boost/shared_ptr.hpp>
using namespace boost;
using namespace std;
class Person
{
public:
Person(){}
Person(string name, int age){this->m_strName = name; this->m_nAge = age;}
~Person(){}
void DisplayMsg(){cout << "姓名:" << this->m_strName << " " << "年龄:" << this->m_nAge << endl;}
void ChangeInfo(string name, int age){this->m_strName = name; this->m_nAge = age;}
private:
string m_strName;
int m_nAge;
};
class Share
{
public:
Share(){}
Share(boost::shared_ptr<Person> spPerson){ this->m_spPeson = spPerson;}
~Share(){}
void ShowInfo(){
cout << "use_count:" << m_spPeson.use_count() << endl;;
m_spPeson->DisplayMsg();}
private:
boost::shared_ptr<Person> m_spPeson;
};
void main()
{
boost::shared_ptr<Person> person = boost::make_shared<Person>(Person("甘全福", 25)); //利用工厂生成share_ptr<Person> person智能指针
cout << " use_count" << person.use_count() << endl ;
{
Share myShare(person);
myShare.ShowInfo();
}
{
Share otherPerson(person);
otherPerson.ShowInfo();
}
cout << " use_count" << person.use_count() << endl ;
/*person->ChangeInfo("陈星", 88);
myShare.ShowInfo();
otherPerson.ShowInfo();
*/
int wait;
cin >> wait;
}
#include <boost/make_shared.hpp>
#include <boost/shared_ptr.hpp>
using namespace boost;
using namespace std;
class Person
{
public:
Person(){}
Person(string name, int age){this->m_strName = name; this->m_nAge = age;}
~Person(){}
void DisplayMsg(){cout << "姓名:" << this->m_strName << " " << "年龄:" << this->m_nAge << endl;}
void ChangeInfo(string name, int age){this->m_strName = name; this->m_nAge = age;}
private:
string m_strName;
int m_nAge;
};
class Share
{
public:
Share(){}
Share(boost::shared_ptr<Person> spPerson){ this->m_spPeson = spPerson;}
~Share(){}
void ShowInfo(){
cout << "use_count:" << m_spPeson.use_count() << endl;;
m_spPeson->DisplayMsg();}
private:
boost::shared_ptr<Person> m_spPeson;
};
void main()
{
boost::shared_ptr<Person> person = boost::make_shared<Person>(Person("甘全福", 25)); //利用工厂生成share_ptr<Person> person智能指针
cout << " use_count" << person.use_count() << endl ;
{
Share myShare(person);
myShare.ShowInfo();
}
{
Share otherPerson(person);
otherPerson.ShowInfo();
}
cout << " use_count" << person.use_count() << endl ;
/*person->ChangeInfo("陈星", 88);
myShare.ShowInfo();
otherPerson.ShowInfo();
*/
int wait;
cin >> wait;
}
相关文章推荐
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++ - "shared_ptr" 拆分智能指针(smart pointer)
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- Effective Modern C++ 条款21 比起直接使用new,更偏爱使用std::make_unique和std::make_shared
- C++ - "shared_ptr" 拆分智能指针(smart pointer)
- cocos2d-x3.0 资源路径生成脚本makeResListtoc++.sh 体验“点”出来的快感!
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- 智能指针(模拟实现auto_ptr,shared_ptr,scooeptr 以及定制删除器c++ 实现)
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- 使用宏生成C++简单工厂
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C/C++自动生成makefile工具 supermake
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果