游戏开发实验室的内部讲座总结----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
第五讲
初始化函数形參(就是有默认值)
这样的默认的形參,必须是从右往左且不能有间隔(就是无默认值)的
有了默认形參,在函数的调用时,就同意了,少赋值几个參数(就是用默认值了被)
第六讲
异常抛出与捕获及处理
三个keyword:
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指针。
一个问题:
{
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对象
类的const对象
const意味着仅仅读,意味着所标识的类成员变量不能出如今=号的左边;构造、析构函数除外。
这种类对象,仅仅能訪问const修饰的成员函数,其它成员函数訪问不了。
class Tdate;
const Tdate dt(1998,8,19);
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个调用了构造函数了。
第十八讲
类静态数据成员(是属于类的,能够用类::訪问)
静态成员的提出是为了解决数据共享的问题。实现数据共享有很多的方法,如:设置全局性的变量或者对象是一种方法。可是,全局变量或对象是有局限性的。这一课,我们主要讨论用类的静态成员了来实现对象间的数据共享。
一、类静态数据成员
静态数据成员在定义或说明时前面加keywordstatic。
静态成员初始化与一般数据成员初始化不同。其格式例如以下:
<数据类型><类名>::<静态数据成员名>=<值>;
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++的更多相关文章
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发
cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 ...
- unity3D游戏开发实战原创视频讲座系列13之帽子戏法游戏开发(预告)
文件夹 第一讲 游戏演示项目创建 第二讲 游戏场景的编辑 第三讲 帽子的移动 第四讲 炮弹的产生 第六讲 游戏界面的完好 第七讲 各种UI的制作 第八讲 分数和爆炸特效 视持续更新中.. ...
- unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
解说文件夹 第一讲 游戏介绍和资源简单介绍 第二讲 游戏场景背景的搭建 第三讲 游戏特效预制体的制作 第四讲 游戏场景前景的显示 第五讲 瓷砖背景块 第六讲 方块的消除 第七讲 方块的交 ...
- unity3D游戏开发实战原创视频讲座系列11之相扑游戏开发并公布到Win\WP8
解说文件夹 第一讲 游戏的演示和资源介绍 第二讲 场景的建设 第三讲 玩家的移动 第四讲 对手的AI(让对手动起来) 第五讲 游戏的管理(上) 第六讲 游戏的管理(下) 第七讲 公布到Win8系 ...
- unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季
解说文件夹 塔防游戏0基础篇... 第一讲 游戏演示和资源介绍... 第二讲 游戏场景的完毕... 第三讲 预制体的制作... 第四讲 敌人的随机产生和按路径行走... 第五讲 塔防工具的产 ...
- unity3D实际的原始视频游戏开发系列讲座12之U3D的2D为了开发实战的新方法
U3D的2D为了开发实战的新方法 (Unity3d-4.x的打飞机2D游戏开发新的方法应用 ) 大纲介绍:不使用NGUI和TK2d插件, 使用 U3D内置强大的最大的工具. 开发过程设计到例 ...
- unity3D实际的原始视频游戏开发系列讲座10它《战斗:外来入侵》在第一季度游戏开发
解说文件夹 <保卫战:异形入侵>游戏开发 第一讲 游戏演示和资源的介绍 第二讲 "异形"怪物的实现 第三讲 "异形"怪物生命值的体现 第四讲 ...
- 项目游戏开发日记 No.0x000005
14软二杨近星(2014551622) 还有一周就要交项目了, 看着周围的人也都忙碌了起来, 看着大部分人的项目都已经初具容貌, 我们团队里面也搞得人心惶惶, 一来是, 时间不多了, 还有很多事情要做 ...
- 【游戏开发】小白学Lua(上)
在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助.脚本语言可以作为初始化文件读入变量和游戏数据的一个快速而方便 ...
随机推荐
- MapReduce调度与执行原理之作业初始化
前言 :本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的整个生命周期过程,权作总结和日后参考,如有问题,请不吝赐教.本文不涉及Hadoop的架构设计,如有兴趣请参考相关 ...
- Firemonkey绑定对象列表
在实现Firemonkey绑定对象列表的过程中,我遇到的一些现有教程当中没有提到的细节,分享一下. 1.追加对象 用Navigator插入记录,位置总是在当前记录之前插入,没有在最后追加一个对象的方法 ...
- Nginx设置alias实现虚拟目录 alias与root的用法区别
Nginx 貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的.如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较"像",干脆来说说alias ...
- QEventLoop等待另外一个事件的停止,非常实用 good
void MyWidget::SendRequest(QString strUser) { network_manager = new QNetworkAccessManager(); connect ...
- Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾
Linux统计文件数量 ls -l | grep "^-" | wc -l “^-” 一般文件 “^d” 目录文件 shell/vim中^表示开头 cat repatterns ...
- 简单概率dp(期望)-zoj-3640-Help Me Escape
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题目大意: 有n条路,选每条路的概率相等,初始能力值为f,每 ...
- Common lisp菜鸟指南(译)
Common lisp菜鸟指南(译) Common lisp菜鸟指南(译)
- 自学PHP 环境搭建
自学PHP之环境搭建 一..首先 安装 phpStudy2013.exe 程序集成包 安装完可能端口被占用 需要手动设置 然后打开http://localhost:8080/phpMyAdmin/ ...
- linux 下opensplice的简易安装
http://www.prismtech.com/opensplice/opensplice-dds-community/software-downloads 下载对应我选择的是: OpenSplic ...
- 深入浅出Node.js (1) - Node简介
1.1 Node的诞生历程 1.2 Node的命名与起源 1.2.1 为什么是JavaScript 1.2.2 为什么叫Node 1.3 Node给JavaScript带来的意义 1.4 Node的特 ...