(8) cocos2d-x中相关的一些C++函数
来源:互联网 发布:数据库查询结果转json 编辑:程序博客网 时间:2024/06/05 11:22
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()代码叫做main1A a;B b;a.print();b.print();}
通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是This is A和This is B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把main()处的代码改一改。int main(){ //main2A 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、创建
先创建两个精灵:
创建容器
2、将创建好的精灵添加进容器中
3、获得容器中的大小
4、获得容器中的精灵,并让这些元素都做统一的动作
5、删除容器中的精灵removeLastObject();
6. struct timeval :有两个成员,一个是秒,一个是微秒, 所以最高精确度是微秒。一般由函数int gettimeofday(struct timeval *tv, struct timezone *tz)获取系统的时间。
0 0
- (8) cocos2d-x中相关的一些C++函数
- cocos2d-x 一些有用的函数
- Cocos2d-x中Layer的生命周期函数
- cocos2d-x 关于CCpoint的一些常用函数
- cocos2d-x 中java调用c/c++函数
- Cocos2d-x中与属性相关的宏
- [cocos2d-x]cocos2d和cocos2d-x的一些通用性
- Cocos2d-x场景切换相关函数介绍
- Cocos2d-x场景切换相关函数介绍
- Cocos2d-x场景切换相关函数介绍
- cocos2d-x中添加gameCenter的一些总结
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- cocos2d-x 开发中使用的一些工具
- LeetCode:String to Integer (atoi)
- MySQL性能调优与架构设计-架构篇
- 嵌入式Boa服务器 中用CCGI 编程出现的 弹出下载弹框的解决办法
- Runtime.getRuntime().addShutdownHook(thread)的作用
- 东京地震8.0 剧本5 真理的独白
- (8) cocos2d-x中相关的一些C++函数
- 激活Maven profile的几种方式
- UITableView reloadData的正确方法
- 【PAT】1086. Tree Traversals Again (25)
- Emacs 学习笔记
- 使用SqlDependency类及利用SQL2008的Service Broker来检测数据改动的实现
- intel media SDK ----摘自ww506772362的专栏
- JS 需要一个JavaScript 的API 希望有的朋友帮下忙,邮箱1360737271@qq.com
- Android LayoutInflater详解