请教一下为什么用静态create方法返回智能指针,三个地址不同的智能指针,打印该类成员值相同,代码如下:
#include <iostream>
#include <memory>
using namespace std;
class Generator
{
public:
typedef shared_ptr<Generator> Pointer;
static Pointer create() {return (Pointer)(new Generator()) ;}
int getData() const {return mdata;}
void setData(int data) {mdata = data;}
~Generator();
private:
Generator();
int mdata;
};
Generator::Generator():mdata(1)
{
// cout<<"construct Generator \n"<<endl;
}
Generator::~Generator()
{
// cout<<"destruct Generator \n"<<endl;
}
int main()
{
Generator::Pointer pGenerator = Generator::create();
cout<<pGenerator->getData()<<endl;//打印 1
pGenerator->setData(100);//修改值为100
cout<<pGenerator->getData()<<endl;//打印 100
Generator::Pointer pGenerator1 = Generator::create();
cout<<pGenerator->getData()<<endl;//打印 100
Generator::Pointer pGenerator2(Generator::create());
cout<<pGenerator->getData()<<endl;//打印 100
cout<<pGenerator<<endl<<pGenerator1<<endl<<pGenerator2<<endl;//0x20bb090 0x20bb0d0 0x20bb110
}