游戏开发实验室的内部讲座总结----c++



第三节 
动态内存分配new和delete

经过调试设置断点,发现new
函数其实还是调用的malloc函数。

第四节 
引用

一个变量是可以有多个引用的,引用也是可以传递的。 
常量是不能有引用的。

当引用作为函数的返回值时。如下的例子//

int
&add(int
&a,int
&b)    
//返回的是a的引用到内存中//

{

a=a+b;

return
a;

}

void main ()

{

int
i,j;

i=1;

j=2;

int
&k=add(i,j);     
//这是引用的传递了, 
是内存的值,但是是a的引用//

k=888;

printf("i=%d,j=%d,k=%d",i,j,k);

}

//运行结果:
i=888,j=2,k=888

第五讲 
初始化函数形参(就是有默认值)

这种默认的形参,必须是从右往左且不能有间隔(就是无默认值)的

有了默认形参,在函数的调用时,就允许了,少赋值几个参数(就是用默认值了被)

第六讲 
异常抛出与捕获及处理

三个关键字:

try -----------标识可能出现的异常代码段;

throw----------抛出一个异常;(必须在try代码块中,其后面的值决定了抛出异常的类型,类似switch--case)

catch-----------标识处理异常的代码段;(会有多个,类似switch--case)

提示:

使用异常处理将带来更多的系统的开销,因此慎用异常//

第七讲 
函数重载

条件:函数名相同,但是:函数的参数类型不同(用函数模板最好了),或者参数个数不同。

数组a的长度(元素的个数)是:sizeof(a)/sizeof(int)

int
a[6]={1,2,3,4,5,6};

第八讲 
函数模板

使用函数模板可以简化形参个数相同,而类型不同的函数;

函数模板的使用:

Template < typename 
T>  //可以用class
替换 typename

例子: 
求数组中
元素最大值的函数;

template
<typename
S>

S
max(S
array[],
int
len
)

{

S
imax=0
;

for
(int
i=0;i<len;i++)

{

if
(array[i]>imax)

{

imax=
array[i];

}

}

return
imax;

}

int
_tmain(int
argc,
_TCHAR*
argv[])

{

int
a[6]={1,2,3,4,5,6};

float
b[5]={1.0f,2.0f,3.3f,5.5f,4.4f,};

printf("数组a最大值为%d\n",max(a,sizeof(a)/sizeof(int)));

printf("数组b最大值为%f",max(b,sizeof(b)/sizeof(float)));

getchar();

return
0;

}

第九讲 
类的初识

构造函数:

成员函数的实例化位置,在类中直接完成就是内敛函数了。 
正常应该是在类的外面完成的。

类的声明是在 
.h文件中,类的实现是在.cpp文件中。 
主函数在一个 .cpp文件中

在vs中新建这些类,  
可以用提供的菜单功能。简单。(函数也是可以的)

第十二讲
 访问类的私有成员

类的私有成员:

用private声明的变量或者函数。  只能在本类中使用,不能在其他类或者本类以外的位置调用、访问。  ;

用public
定义的变量或者函数可以在
整个程序中调用访问。

访问类的私有成员(读取):

可以通过定义本类的
成员函数,来访问本类的成员变量。

Inline 内敛函数:

内敛函数的声明?????????????

函数实现时,如果不是在类中, 
那么也要和类的声明在同一个文件中。

第十三讲 
默认赋值构造函数

三种情况:

1、类的对象
赋值初始化另外的类对象(类肯定是一个了)

2、函数的 
参数传递(类对像之间)

3、函数的返回值
是类的对象。

第十四讲 
友元函数

友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想要更新你的类时,还要征得其他部分的拥有者的同意)。

在类中声明这个友元函数:

friend +
函数的声明格式;

程序中的内存:(大小是以字节B为单位的)

(大)堆
malloc、
new

(小)栈
函数

C语言中的指针:多用于以下的内容

Int m_nSize=…;

Int * pNum= (int *) new BYTE[m_nSize];  
//字节//

pNum[10]=…….

赋值为NULL或0的指针,声明时是有类型的,只是不指向任何有效的地址。

Void类型的指针,可以指向任何类型。

第十五讲 
this指针(几乎所有面向对象语言都有,我目前接触的是这样)

this指针可以看成是实例化对象的地址。在类成员函数里访问成员变量,其实也隐含使用了this指针。

一个问题:

class Tdate

{

int Year;

intMonth;

intDay;

public:

Tdate(intYear,int Month,int 
Day)

{

Year= Year;     //这里是有问题的: 
我们想给类的成员变量赋值,但是对不把。

Month= Month;

Day= Day;

}

};

更改如下:

Tdate(int Year,int Month,int 
Day)

{

this->Year=Year;     //这里是有问题的: 
我们想给类的成员变量赋值,但是对不把。

this->Month=Month;

this->Day=Day;

}

第十六讲 
类的const对象

  1. 类的const对象

const意味着只读,意味着所标识的类成员变量不能出现在=号的左边;构造、析构函数除外。

这样的类对象,只能访问const修饰的成员函数,其他成员函数访问不了。

class Tdate;

const Tdate dt(1998,8,19);

  1. const修饰成员函数(实现和声明都要有!const)

const放在函数的尾部。不能修饰构造函数。

第十七讲 
类的对象数组

我们声明类对象的数组,与我们声明内置类型(ing,float)数组的方式完全相同。

int b[3];

Tdate d[2];  
调用默认构造函数了。

int b[3]={1,2,3};

Tdate d[2] ={Tdate(1999,1,29),Tdate(2000,3,45)};   
//用构造函数呗

Tdate d[10]={Tdate(1999,1,29),Tdate(2000,3,45)}; 
//后面没有赋值的8个调用了构造函数了。

第十八讲 
类静态数据成员(是属于类的,可以用类::访问)

静态成员的提出是为了解决数据共享的问题。实现数据共享有许多的方法,如:设置全局性的变量或者对象是一种方法。但是,全局变量或对象是有局限性的。这一课,我们主要讨论用类的静态成员了来实现对象间的数据共享。

一、类静态数据成员

  1. 静态数据成员在定义或说明时前面加关键字static。
  2. 静态成员初始化与一般数据成员初始化不同。其格式如下:

<数据类型><类名>::<静态数据成员名>=<值>;

3、静态数据成员是静态存储的,他是静态生存期,必须对它进行初始化。

4、引用静态数据成员时,采用如下格式:

<类名>::<静态成员名>;

例如,可以用类的静态成员函数存放用于存放类的实例化次数(对象个数)

哪怕没有对象的实例也是可以访问的。

二、类静态成员函数

静态成员函数内不能使用非静态类成员数据。

类成员函数可以独立使用。

可以使用类+作用域解析符调用静态成员函数,如Tdate::staticFun();

最好把成员函数的实现放在.cpp里边,以防止重复定义。(因为.h文件可能被多次的引用)。静态的东西被多次的编译是会出错的。

第十九讲 
类对象指针

定义类对象的指针:

Tdate d1; //对象

Tdate *p1 = &d1;

Tdate *p2
= (Tdate *)malloc(sizeof(Tdate));

Tdate *p3 = new Tdate;

如果:我

Tdate * p = NULL;

Int n=p-> year;  
//没有指定的存储空间,非法了,除非
year是静态类型的变量。

游戏开发实验室的内部讲座总结----c++

时间: 2024-10-27 12:14:08

游戏开发实验室的内部讲座总结----c++的相关文章

unity3D游戏开发实战原创视频讲座系列10之《保卫战:异形入侵》游戏开发第一季

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发

 第一讲 游戏的演示和工具介绍...1 第二讲 创建项目...2 第三讲 界面显示...3 第四讲 数字2的产生...7 第五讲 输入操作的推断...9 第六讲 输入操作的反应...13 第七讲 分数的累加.游戏结束检測...18 第八讲 界面美化...22 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/1058663622 持续更新中~~~~~~~~~~~~~~. 第一讲 

unity3D游戏开发实战原创视频讲座系列12之U3D的2D开发新方法实战

 U3D的2D开发新方法实战 (Unity3d-4.x的打飞机2D游戏开发新的方法应用 ) 大纲介绍:不使用NGUI和TK2d插件,   使用 U3D内置强大的最大的工具. 开发过程设计到如下内容: 从图片集中截取出 精灵.(这些与以前的方法是不同的) 连续图片的动画制作. 对动画的编辑 Mecanim动画系统的使用 2D物理系统和碰撞检测. 游戏的简单完善(敌机的产生.背景滚动.声音.分数的实现). 会用8讲的时间来介绍. 视持续更新中.... 视频存放地址如下:http://ipd.pp

unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发

解说文件夹 第一讲  游戏介绍和资源简单介绍 第二讲  游戏场景背景的搭建 第三讲  游戏特效预制体的制作 第四讲  游戏场景前景的显示 第五讲  瓷砖背景块 第六讲  方块的消除 第七讲  方块的交换方式一 第八讲  方块的交换方式二 第九讲  方块的消除 第十讲  方块的下落 第十一讲  方块的产生 第十二讲  金币无用消除和激活特效的产生 第十三讲  分数的产生 第十四讲  游戏剩余时间的设置 视持续更新中... . 视频存放地址例如以下:http://ipd.pps.tv/user/10

unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季

解说文件夹 塔防游戏0基础篇... 第一讲  游戏演示和资源介绍... 第二讲  游戏场景的完毕... 第三讲  预制体的制作... 第四讲  敌人的随机产生和按路径行走... 第五讲  塔防工具的产生和设计... 第六讲  敌人血条的改变和分数使用... 第七讲  鼠标控制摄像头... 第八讲  玩家生命值的使用... 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/105866

unity3D游戏开发实战原创视频讲座系列11之相扑游戏开发并公布到Win\Wp8

?? 解说文件夹 第一讲 游戏的演示和资源介绍 第二讲 场景的建设 第三讲 玩家的移动 第四讲 对手的AI(让对手动起来) 第五讲 游戏的管理(上) 第六讲 游戏的管理(下) 第七讲 公布到Win8系统上 第八讲 公布到Win8系统上最高分分享 第九讲 公布到Windows Phone8系统上 视持续更新中... . 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/1058663622 持续更新中~~~

unity3D游戏开发实战原创视频讲座系列13之帽子戏法游戏开发(预告)

文件夹 第一讲  游戏演示项目创建...1 第二讲 游戏场景的编辑...1 第三讲  帽子的移动...2 第四讲  炮弹的产生...4 第六讲  游戏界面的完好...6 第七讲 各种UI的制作...8 第八讲  分数和爆炸特效...10   视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/1058663622 持续更新中~~~~~~~~~~~~~~.

unity3D游戏开发实战原创视频讲座系列8之拳王争霸游戏开发

讲解目录 第一讲  游戏演示和资源的介绍 第二讲 scene场景的编辑 第三讲  主角的移动 第四讲  主角的攻击动作(战斗) 第五讲  对手的人工智能(一) 第六讲  对手的人工智能(二) 第七讲  碰撞检测处理(一) 第八讲  碰撞检测处理(二) 第九讲  血条和耐力条的使用 第十讲  回合数的使用 第十一讲  intro场景的处理 第十二讲  results场景的处理 视持续更新中.... 视频存放地址如下:http://ipd.pps.tv/user/1058663622 或者:http

游戏开发(三)——WIN32 黑白棋(三)——游戏画面的现实

整个游戏分3部分介绍. 1.棋局的现实 2.AI的现实 3.游戏画面的现实 提供一下完整项目下载 这是第三部分:画面的显示 这部分其实就比较简单的,说白了就是api的堆砌. 主要了解下windows的消息机制,以及怎么画图 主要是分别封装了下对棋盘,棋子,以及当前轮到谁,当前比分是多少,就是游戏画面上不同的部分的绘制. void DrawReversiBoard(); void DrawReversiPieces(EnumReversiPiecesType type, int row_y, in