成员函数指针的应用 之 仿写OC里面UIButton的回调机制(二)
2015-01-17 15:00
295 查看
// // main.cpp // Basic // // Created by 06 on 15/1/9. // Copyright (c) 2015年 黄永锐. All rights reserved. // #include <iostream> using namespace std; // struct NSObject{//负责内存管理的类 bool init(){ return true; } }; //英雄类 struct Hero:public NSObject{ void move(){ cout << "英雄移动了" << endl; } }; #pragma 结构体中的变量 不写权限 默认都是公开的。 类中,不写权限,默认都是私有的。 //C++的继承是单冒号: public是公开继承 struct UIButton :public NSObject{ private: //成员变量 一般都是私有的,然后给它提供公开的set get 接口方法 int _tag; Hero *_hero;//这只是指针 还应该要创建他,在哪里创建?初始化方法里面??不行,因为如果你想要2个英雄的话,那岂不是要创建2个按钮??应该在创建按钮的时候传进去 public: //对于OC来说 创建对象都有一个类方法+ //在C++中 有个类似的 是静态方法 都是通过类名调用的 static UIButton* buttonWithHero(Hero* hero){//返回值类型是UIButton类型的指针 //创建对象 //第一步是开辟空间 UIButton *m_button = new UIButton;//这里并不像OC的alloc 创建出来计数器就+1,在C++中没有引用计数器的概念所以没有加一减一。。。开辟空间就new,释放就delete //第二步是初始化 if (m_button->initWithHero(hero)) {//指针访问方法用箭头 //如果是OC里面的话 这里还会调用 autorelease() //第三部返回对象的指针 return m_button; } //如果初始化失败 //销毁空间 delete m_button; //防止野指针 m_button = nullptr; return NULL; } // 返回布尔值判断是否初始化成功 bool initWithHero(Hero* hero) { #pragma 注意原理 子类初始化一定先要调用父类的初始化方法(因为父类的初始化里面可能给某个变量赋值了,如果你没有调用父类的初始化,那么你继承下来的就没有值) if (!NSObject::init()) { return false;//父类初始化失败 } //初始化子类自己的东西 _hero = hero; return true; } //成员变量的set get方法 int getTag(){ return _tag; } void setTag(int tag){ //如果在OC里面有这么一个方法self.tag = tag;会有问题吗?有!死循环! _tag = tag; } //模拟点击button的时候 void touch(){ cout << "Button被点中" << endl; }//我现在希望点中的时候英雄移动(不是打印一句话,而是英雄对象调用他自身的移动方法) void touch1(){ _hero -> move(); } }; //主函数 int main(){ //通过类方法创建按钮 // UIButton *button = UIButton::button(); // button->touch();// //创建英雄 Hero* hero = new Hero; //创建button UIButton *button = UIButton::buttonWithHero(hero); button->touch1(); #pragma 问题 //但是我现在想把button放在飞机的身上,点击让飞机移动 那么我岂不是要把源文件英雄改成飞机?? //也就是说我想button通用,怎么办?button代表的对象只能动态获取,执行的方法也需要动态获取 _hero -> move(); //应该把英雄对象 提出来作为参数,但是参数类型不能固定为英雄,而是NSObject类型,无论是飞机坦克大炮 都可以传进来 //第一步:动态传进对象 //第二部:动态传进方法 return 0; }
相关文章推荐
- 成员函数指针的应用 之 仿写OC里面UIButton的回调机制(三)
- 成员函数指针的应用 之 仿写OC里面UIButton的回调机制(一)
- cocos2d-x中函数回调 事件监听机制详细解析 涉及c++成员函数指针
- 类成员函数指针回调问题。(可以回调但是,函数回调后this指针无效)
- C++成员函数指针的应用(学习收录)
- C++成员函数指针的应用
- 成员函数指针数组的应用
- C++成员函数指针的应用
- C++成员函数指针的应用
- Delphi 函数指针(三大好处:灵活,委托的本质,回调机制),还可把函数指针当参数传入
- 类里面的成员函数指针使用
- C++成员函数指针的应用(学习收录)
- 函数指针与指针函数---应用为函数的回调
- C++成员函数指针的应用
- C++成员函数指针的应用
- c++成员函数指针的应用
- C++成员函数指针的应用
- 成员函数指针数组应用
- 成员函数指针在开发中的实际应用
- C++成员函数指针的应用