#include <iostream>
#include <vector>
using namespace std;
class Node
{
public:
static Node* create();
void autorelease();
protected:
Node();
virtual bool init();
virtual ~Node();
};
void Node::autorelease()
{
delete this;
}
Node* Node::create()
{
auto sp = new Node();
if(sp && sp->init())
{
}
else
{
delete sp;
}
return sp;
}
Node::Node()
{
}
Node::~Node()
{
cout << "the Node is destructed" << endl;
}
bool Node::init()
{
return true;
}
class Player : public Node
{
public:
static Player* create();
protected:
Player();
virtual ~Player();
virtual bool init();
};
Player::Player()
{
}
Player::~Player()
{
cout << "the player is destructed" << endl;
}
Player* Player::create()
{
auto sp = new Player();
if(sp && sp->init())
{
}
else
{
delete sp;
}
return sp;
}
bool Player::init()
{
return true;
}
int main()
{
auto sp = Player::create();
sp->autorelease();
return 0;
}
结果输出:
the player is destructed
the Node is destructed
Program ended with exit code: 0