class CGood: public std::enable_shared_from_this<CGood>
{
public:
std::shared_ptr<CGood> getPtr()
{
return shared_from_this();
}
~CGood()
{
std::cout << "call it good";
}
};
class CBad
{
public:
std::shared_ptr<CBad> getPtr()
{
return std::shared_ptr<CBad>(this);
}
~CBad()
{
std::cout << "call it bad";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::shared_ptr<CGood>pGood(new CGood);
std::shared_ptr<CGood> pg1 = pGood->getPtr();
std::shared_ptr<CGood> pg2 = pGood;
cout << pGood.use_count() << endl;
std::shared_ptr<CBad> pBad(new CBad);
std::shared_ptr<CBad> pb1 = pBad->getPtr();
cout << pBad.use_count() << endl;
getchar();
return 0;
}
{
public:
std::shared_ptr<CGood> getPtr()
{
return shared_from_this();
}
~CGood()
{
std::cout << "call it good";
}
};
class CBad
{
public:
std::shared_ptr<CBad> getPtr()
{
return std::shared_ptr<CBad>(this);
}
~CBad()
{
std::cout << "call it bad";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::shared_ptr<CGood>pGood(new CGood);
std::shared_ptr<CGood> pg1 = pGood->getPtr();
std::shared_ptr<CGood> pg2 = pGood;
cout << pGood.use_count() << endl;
std::shared_ptr<CBad> pBad(new CBad);
std::shared_ptr<CBad> pb1 = pBad->getPtr();
cout << pBad.use_count() << endl;
getchar();
return 0;
}