Mountain:终南山 Single_arm:杨过 Little_dragon_maiden:小龙女 Jade girl's Heart Sutra:玉女心经 Dust_world:尘世 being silent and your palm:黯然销魂掌
#include#include using namespace std; enum MARTIAL { single_arm, little_dragon_maiden }; class Mountain { public: int test_int = 3; virtual void show() = 0; }; class Single_arm : public Mountain { public: Single_arm(int param_test = 0) { this->test_int = param_test; } private: void show(); }; void Single_arm::show() { cout << "being silent and your palm" << endl; } class Little_dragon_maiden : public Mountain { private: //并不会限制show()函数 void show(); }; // void Little_dragon_maiden::show_again() // { // cout << "again_show" << endl; // } void Little_dragon_maiden::show() { cout << "Jade girl's Heart Sutra" << endl; } class Dust_world { public: static Single_arm* p_Single_arm; static Little_dragon_maiden* p_Little_dragon_maiden; static Mountain* character(MARTIAL type); }; Single_arm* Dust_world::p_Single_arm = NULL; Little_dragon_maiden* Dust_world:: p_Little_dragon_maiden = NULL; Mountain* Dust_world::character(MARTIAL type) { if(type == single_arm) { if(p_Single_arm == NULL) { p_Single_arm = new Single_arm(6); } return p_Single_arm; } if(type == little_dragon_maiden) { if(p_Little_dragon_maiden == NULL) { p_Little_dragon_maiden = new Little_dragon_maiden; } return p_Little_dragon_maiden; } } int main(void) { Mountain* p_Mounuain = Dust_world::character(MARTIAL::single_arm); Mountain* p_Mounuain_2 = Dust_world::character(MARTIAL::little_dragon_maiden); cout << "test_int : " << p_Mounuain->test_int << endl; cout << "test_int : " << Dust_world::p_Single_arm->test_int << endl; p_Mounuain->show(); p_Mounuain_2->show(); //可访问 //虚函数表可见性 Dust_world::character(MARTIAL::single_arm)->show(); delete Dust_world::p_Single_arm; delete Dust_world::p_Little_dragon_maiden; cout << "hello friend !" << endl; //不可访问 // Single_arm* test_p_Single_arm = new Single_arm(0); // test_p_Single_arm->show(); //不可访问 // Single_arm sigle_arm; // sigle_arm.show(); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)