我所理解的cocos2dxactivity-x是c++么

cocos2d-x中c++到js_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
cocos2d-x中c++到js
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩25页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢Cocos2d-x 系列三之C++语言
来源:博客园
1.面向对象&1&直接定义类

class People {
public:
void sayHello() {
printf("hello c oop \n");
}
};


People * p = new People();
p-&sayHello();

&2&使用头文件定义
Ml.h

#ifndef ML_H_
#define ML_H_

namespace cjyn { // 命名空间

class Ml {
public:
void sayHello();
};
}
#endif /* ML_H_ */

Ml.cpp

#include "Ml.h"
#include &iostream&
#include &stdio.h&
namespace cjyn {

void Ml::sayHello() { // 返回类型 类名::方法名
printf("hello cpp");
}

}

main.cpp 调用

#include &iostream&
#include "Ml.h"
#include &stdio.h&
using namespace

int main(int argc, const char* argv[]) {
cjyn::Ml *ml = new cjyn::Ml();
ml-&sayHello();
 // 释放对象,如同C中的free
}

补充:如果没有引入using namespace cyjn,则在申明类的时候需要使用(命名空间::类名)的方式,如果引入了命名空间,则上面的申明可以直接使用类名而不需要使用命名空间;
2.类的继承(People-&Man)
People.cpp

#include "People.h"
#include &iostream&
#include &stdio.h&

void People::sayHello() {
printf("hello cpp");
}

int People::getAge() {
return this-&
}

People::People(int age) {
this-&age =
}
People::People() {
this-&age = 12;
}

People.h

#ifndef ML_H_
#define ML_H_

class People {
private:
int
public:
People();
People(int age);
void sayHello();
void setAge();
int getAge();
};

#endif /* ML_H_ */

子类Man:Man.h

#ifndef MAN_H_
#define MAN_H_
#include "People.h"

class Man: public People { // public 表示从父类继承下来的成员变量是public的
public:
};
#endif /* MAN_H_ */

main.cpp

int main(int argc, const char* argv[]) {
Man *m = new Man();
m-&sayHello(); //hello cpp

}

3.引用父类方法
&1&.构造方法
Man.h

#ifndef MAN_H_
#define MAN_H_
#include "People.h"

class Man: public People { // public 表示从父类继承下来的成员变量是public的
public:
Man(int age);
void sayHello();
};
#endif /* MAN_H_ */

Man.cpp

Man::Man(int age) : People(age) { // 想要执行父类的构造方法只需要在子类构造方法之后加冒号并且调用父类构造方法即可
}

&2&.其他方法调用
Man.cpp

Man::Man(int age) : People(age) {
People::sayHello(); // @1
}

void Man::sayHello() {
printf("man say hello cpp\n");
}

Man.h

class Man: public People { // public 表示从父类继承下来的成员变量是public的
public:
Man(int age);
void sayHello();
};
#endif /* MAN_H_ */

main.cpp

int main(int argc, const char* argv[]) {
Man *m = new Man(34);
printf("age %d \n", m-&getAge());
m-&sayHello(); // 调用man的sayHello
m-&People::sayHello(); // 调用People的sayHello @2

}

父类普通方法的调用之需要在方法名前加(类名::方法名),有两种调用方式@1,@2;
4.面向对象特点
&1&.虚函数、纯虚函数、纯虚类

class People {
private:
int
public:
People();
People(int age);
// 虚函数:定义为虚函数之后就可以在运行的时候动态加载相应的方法(相当于java中多态);
virtual void sayHello();
// 纯虚函数,相当于java中的抽象方法;对应的类就是抽象类
virtual void eat()=0;
void setAge();
int getAge();
};
#endif /* ML_H_ */

纯虚类就是类中所有方法都是纯虚函数,相当于java中的接口;虚函数和纯虚函数分别由子类去重写(可重写可不重写)和实现(子类必须进行实现);
5.操作符重载

class Point {
private:
int x,
public:
Point(int x, int y) {
this-&x =
this-&y =
}

void add(Point p) {
this-&x += p.x;
this-&y += p.y;
}

void operator +=(Point p) {
add(p);
}

int getX() {
return this-&x;
int getY() {
return this-&y;
}
};

实例:

int main(int argc, const char* argv[]) {
Point p(10, 10);
std::cout && p.getX() && "\n";
p += Point(12, 12);
std::cout && p.getX() && "\n";

Point *pp = new Point(5, 5);
(*pp) += Point(4, 4);
std::cout && pp-&getX() && "\n";
}

上述代码输出结果为:10,22,9;
&2&.操作符重载之伪函数
伪函数就是把一个类当作一个方法来调用,下面直接看例子

class Point {
public:
void operator ()() {
std::cout && "hello point" && "\n";
}
};

使用(这种方式的优点在于比如把类当作一个参数传递)

int main(int argc, const char* argv[]) {
p(); // 输出hello point
}

6.函数指针
C++中函数指针和C语言中函数指针其实比较类似,下面是C语言中的两种定义方法
void (*Pointer)();
typedef void (*Pointer)();
接着来看C++中函数指针的定义 
@1


class Object
{
public:
void (Object::*sayHi)();
};


@2


class O
typedef void (Object::*SayHi)();

class Object
{
public:
SayHi sayHi;
};


通过上面的例子不难看出,都是返回类型+(指针名称定义)+(参数) ,不过在C++中,需要定义函数指针所在的类,在上面即是限定指针为Object的成员或者Object子类的成员;
下面看一个例子:编写一个类继承自Object,并且给sayHi指针赋值;

class Hello : public Object
{
public:
Hello(){
//sayHi = (void(Object::*)())(&Hello::helloSayHi); 将Hello本身的helloSayHi方法赋予sayHi;使用@1方式定义指针
//sayHi = (SayHi)(&Hello::helloSayHi); 将Hello的helloSzyHi方法赋予sayHi,使用@2方式定义指针

//(this-&*sayHi)(); // 执行sayHi指针; 
void helloSayHi(){
printf("hello say hi\n");
}
};

再来看一个例子(延迟执行):

class O
typedef void (Object::*CallaterHandler)(); // 定义一个指针,该指针所属类为Object类;

#define CH(fp) (CallaterHandler)(&fp) // 取fp的地址,强制转换为CallaterHandler;

void threadFunc(Object *obj,CallaterHandler handler,int delay){
_Thrd_sleep(d); // thread sleep
(obj-&*handler)(); // 执行handler指针
}

void callater(Object *obj,CallaterHandler handler,int delay){
std::thread t(threadFunc,obj,handler,delay);
t.join();
}

class Object
{};

class Hello :
public Object
{
public:
Hello(){
//callater(this,(CallaterHandler)(&Hello::helloSayHi),3);
callater(this,CH(Hello::helloSayHi),3);
void helloSayHi(){
printf("hello say hi\n");
}
};

7.引用
先来看一个例子

class PP {
public:
PP(int x) {
this-&x =
void add(PP p) {
this-&x += p.getX();
int getX() {
return this-&x;
}
private:
int
};

上面的add方法传入一个PP对象,在执行相加方法时,会对传入的对象进行内存的拷贝,事实上这样的效率不高,为了防止内存的拷贝,可以把add方法更改为add(PP &p)
// &表示取地址当然,这样的实现完全可以直接通过指针来代替; 
8.有元类
在C++中,默认没家修饰符的字段为private,但是有时候需要把特定的字段公开给某一个类,这时候就需要用到有元类;

class A {
friend class B; // 通过这样定义,就可以在B类中访问到num
private:
int
public:
A() {
num = 10;
}
};

class B {
public:
B() {
printf("%d", a.num);
}
};

9.集合|容器

int main(int argc, const char* argv[]) {
std::list&std::string& // 需要导入list
l.push_back("hello");
l.push_back("spring");
std::list&std::string&::iterator it = l.begin();
for (; it != l.end(); it++) {
std::cout && *it && "\n";
}

map&string, string& // 需要导入map
m.insert(pair&string, string&("key1", "value1"));
m.insert(pair&string, string&("key2", "value2")); //
m["key1"] = "value1+"; //
cout && m.at("key1");

return 0;
}

上面的代码输出结果为:hello spring value1+
10.字符串 

#include &iostream&
#include &string&
#include &sstream&

using namespace

int main(int argc, const char* argv[]) {
string
s += "hello ";
s += "string";
cout && s && "\n";


ss && "hello";
ss && 23;
ss && "spring" && 25;
cout && ss.str()&&"\n";
return 0;
}

string ss(4,'a');
// aaaa
在c++中,还有另一种占位符形式的格式化字符串的方法,也比较常见;

float _time = 23.0f;
char string[15] = {0};
sprintf(string, "%f Test j", _time);

sprintf();
11.文件操作

#include &iostream&
#include &string&
#include &sstream&
#include &fstream&

using namespace

int main(int argc, const char* argv[]) {
//
ofstream of("data.txt");
//
of && "hello cpp \n";
//
of.close();

ifstream inf("data.txt");

inf &&
cout && c && "\n"; // 读取第一个字符


inf && &
cout && sb.str() && "\n"; // 读取全部字符
return 0;
}

12.内联函数内联函数和宏的功能性相仿,内联函数在编译的时候,就把所调用的函数直接替换成为函数的具体实现代码,减少了运行的时候函数调用的开销;
内联函数的定义:

inline char* getName(){
return
};

只需要在函数的定义前边加一个inline即可;需要注意的是,内联函数的实现代码不能太多,否则可能造成代码膨胀,一般适用于少量的代码块;
13.模板函数与模板类

// 模板函数
template &class T&
T getMax(T a,T b){
return a&b?a:b;
}

// 模板类
template &class T&
class LinkList
{
T *t;
node *pN
node *
public:
void addNewNode(T *t);
void deleteNode(int id);
};

上面分别定义了一个模板函数和一个模板类,使用模板函数的时候,我们可以给getMax传递各种类型的参数,比如int float,而不用分别写一个int和float的比较方法;另一个模板类,则模仿了链表的管理实现;
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动学了cocos2d-x找工作怎么这么难!_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:272,346贴子:
学了cocos2d-x找工作怎么这么难!收藏
本人到现在已经花了9个月时间自学了C++、cocos2d-x、socket、lua、cocostudio,现在可以用这些工具独立做个小游戏了。想找个手游实习的工作,找了快2个月了,都是要有经验的,根本没招实习生。想问下前辈们,手游行业为什么都不招实习生,那些高手是这么来的?已经学了9个月了,如果放弃或许以后会后悔一辈子!
插画培训,60天入门到插画高手,推荐工作
9个月。。毅力帝
是哪个城市的?
勿在浮沙筑高塔
运钞车一般从金库开出有固定线路,一般配4名人员,驾驶员一名 ,车长一位,护送的2位,这2位是带枪的,散弹枪,前2发为空弹,第三发为实弹,运送银行网点一般为7到20个不等,银行日常现金量,小银行不多大概50到100万,大行特别是总分行会多一点。快过年了,应该好好想想了……
楼主我也想学cocos2dx,这个引擎能不能开发win的2d游戏?
要我招我也不大会招没经验的。
你要我们这些本科生说什么好
cocos只要有比较好的作品就能高薪的,至少我周边的好多人都是。
有工作经验的很多是从网游程序员转过去的。
c++培训课程,美国上市公司&达内&出品c++课程,15年教学经验,总监级c++讲师亲授!!达内开创&先就业后付款&模式.名企项目总监授课,成就&稀缺级&c/c++软件工程师
楼主会的比我还多啊吓死了,准备跳槽,只有2年多工作经验怎么办
尼玛呀!九个月竟然学会那么多东西!!老子一年多还在控制台鬼混…………c++还没搞完
才两个月 再找呗 别灰心
你做的游戏呢? 晒出来看看
我学了5年了 还在干保安 我也想搞游戏开发 打算再学5年 这么说 你就有信心了吧 再笨也没我这么笨的 要实在找不到 就下血本上个培训班 包工作的那种 上了道就好走了
继续找啊 说不定再找几个月就有了
最重要的是看一个人有没有上进心。工作经验也无所谓~ 不过你还是说自己又经验好些,很多公司装B。面试官装B。多与有工作经验的人交流下~
路过帮顶,新人前排混脸熟——这是一条简单的尾巴,为揉脸而生
路过帮顶,新人前排混脸熟 ——这是一条简单的尾巴,为揉脸而生
这是自己做的demo,能实现攻击和被攻击,怪物自动寻路。这样离上班是不是差距还很大
楼主好厉害
你去面试一定要尽可能早点展示自己的demo,然后往自己的这个项目上扯,不然你会被问住
我们这缺人,不过不是游戏行业……
。???。。···①、无聊的时候,我就登俩QQ,自己和自己聊天。②、无聊的时候,我就对着镜子说:帅哥,你真帅!③、无聊的时候,我就拼命喝水,然后看自己憋尿能憋多长时间。④、无聊的时候,我就去逛街,把别人扔进垃圾桶的垃圾掏出来扔地上。⑤、无聊的时候,我就去公厕,不 脱 裤子蹲在坑上唱首歌。
楼主这样没人要么不要吓我们这些还没找实习的毕业生
水平是够找实习了,LZ可能差在交流上,而不是技术上,可以多注意面试时该怎么回答,继续加油吧~
楼主,c怎么编写贪吃蛇?网上的好多都不能运行
工作经验写一年
千万别放弃,手游在未来几年很有潜力的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 cocos2d x教程 的文章

 

随机推荐