cocos2dx3.2 从引擎中学到的一招,创建新类,构造函数和虚析构函数都应该是保护类型

来源:互联网 发布:excel表格数据相乘 编辑:程序博客网 时间:2024/05/12 01:09

#include <iostream>

#include <vector>

using namespace std;

class Node

{

public:

   static Node* create();

   void autorelease();    

protected:

    Node();

   virtual bool init();

   virtual ~Node();    

};


voidNode::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



0 0