(8) cocos2d-x中相关的一些C++函数
1. Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚函数。虚函数的作用是为了实现多态(Polymorphism),下面是网上的一个例子,看代码
class A{ public: void print(){ cout<<”This is A”<<endl;} }; class B:public A{ public: void print(){ cout<<”This is B”<<endl;} }; int main(){ //为了在以后便于区分,我这段main()代码叫做main1 A a; B b; a.print(); b.print(); } 通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是This is A和This is B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把main()处的代码改一改。 int main(){ //main2 A a; B b; A* p1=&a; A* p2=&b; p1->print(); p2->print(); } 运行一下看看结果,哟呵,蓦然回首,结果却是两个This is A。问题来了,p2明明指向的是class B的对象但却是调用的class A的print()函数,这不是我们所期望的结果,那么解决这个问题就需要用到虚函数 class A{ public: virtual void print(){ cout<<”This is A”<<endl;} //现在成了虚函数了 }; class B:public A{ public: void print(){ cout<<”This is B”<<endl;} //这里需要在前面加上关键字virtual吗? }; 毫无疑问,class A的成员函数print()已经成了虚函数,那么class B的print()成了虚函数了吗?回答是Yes,我们只需在把基类的成员函数设为virtual,其派生类的相应的函数也会自动变为虚函数。所以,class B的print()也成了虚函数。那么对于在派生类的相应函数前是否需要用virtual关键字修饰,那就是你自己的问题了。 现在重新运行main2的代码,这样输出的结果就是This is A和This is B了。 现在来消化一下,我作个简单的总结,指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。 2. sprintf()函数:把格式化的数据写入某一个字符串中
函数原型:int sprintf( char *buffer,const char *format [,argument] … ); 返回值:字符串长度(strlen) 例子: char* who = "I"; char* whom = "CSDN"; sprintf(s,"%s love %s.",who,whom); //产生:"I love CSDN. " 这字符串写到s中 sprintf(s,"%10.3f",3.1415626); //产生:" 3.142" 3. 创建一个飞机单例
PlaneLayer* PlaneLayer::create() { PlaneLayer *pRet = new PlaneLayer(); if (pRet && pRet->init()) { pRet->autorelease(); sharedPlane = pRet;//赋值给单例变量 return pRet; } else { CC_SAFE_DELETE(pRet); return NULL; } } 4.static_cast < type-id > ( expression )该运算符把expression转换为type-id类型。
5. vector vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。
vector的构造 函数原型: template<typename T> explicit vector(); // 默认构造函数,vector对象为空 explicit vector(size_type n,const T& v = T()); // 创建有n个元素的vector对象 vector(const vector& x); vector(const_iterator first,const_iterator last);1、创建 先创建两个精灵: 创建容器
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Group and Capture Parts of the Match (归类和抓取匹配中某
- 正则表达式参考资料
- c – 使用一个操作符的重载来使另一个操作符超载是一种好的
- Swift 算法实战之路:基本语法与技巧
- Ajax及jQuery学习
- ruby-on-rails – simple_form:指定文本字段的id
- c – 如何将QActions列表添加到QMenu并使用单个插槽处理?
- ruby-on-rails-3.1 – ICS文件的Amazon SES附件错误
- ruby-on-rails – 无法运行localhost:3000:呈现空白页面
- ruby-on-rails – 该行比前一行缩进了2级. HAML