博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2009年6月15日

摘要: ++相比C#令人头痛也同样令痴迷于C++的程序员快慰的一点是对于指针的操作和对于内存的分配。不熟练的程序开发者往往会因指针和内存的不当操作而碰到许多问题。而娴熟的程序员确可以自如地定义指针的行为,自主分配/回收内存,使得程序代码的执行效率更高。 内存的分配/回收有两种机制。其一是malloc()/free()函数,其二是new/delete运算符。malloc()/free()是C++/C语言的标... 阅读全文

posted @ 2009-06-15 15:39 浪端之渡鸟 阅读(487) 评论(0) 推荐(0) 编辑

2009年6月10日

摘要: 下面我们讲解一下 switch 语句的用法。switch 语句的结构如下所示: switch (整型表达式) { case 整型常量1: 一系列语句 // 可有可无 case 整型常量2: 一系列语句 // 可有可无 case 整型常量3: 一系列语句 // 可有可无 // ... ... default : // 可有可无 一系列语句 // 可有可无 }其中,“整型表达式̶... 阅读全文

posted @ 2009-06-10 11:33 浪端之渡鸟 阅读(616) 评论(1) 推荐(0) 编辑

2009年6月9日

摘要: 先给出结论:i++ = 5; 错++i = 5; 对原因为何:i++的运算结果并不是i这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算: i++=5;甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误 。左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。 a = 5; a是左值。 不能被改变的值不是左值,常量像5,'a',"abc... 阅读全文

posted @ 2009-06-09 17:04 浪端之渡鸟 阅读(502) 评论(0) 推荐(0) 编辑

摘要: 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。当编译一个C++程序时,计算机的内存被分成了4个区域,一个包括程序的代码,一个包括所有的全局变量,一个是堆栈,还有一个是堆(heap), 阅读全文

posted @ 2009-06-09 13:19 浪端之渡鸟 阅读(2189) 评论(24) 推荐(0) 编辑

2009年6月3日

摘要: 查找节点,并返回该节点HTREEITEM GroupTree::FindTreeItem(HTREEITEM item,CString& strText) { HTREEITEM hFind; if(item == NULL) return NULL; while(item!=NULL) { if(m_pTree->GetItemText(item) == strText) retu... 阅读全文

posted @ 2009-06-03 15:33 浪端之渡鸟 阅读(2230) 评论(0) 推荐(0) 编辑

2009年6月1日

摘要: [代码] 阅读全文

posted @ 2009-06-01 15:16 浪端之渡鸟 阅读(489) 评论(0) 推荐(0) 编辑

2009年5月28日

摘要: C++中异常处理的语法。 关键字   1、 try   2、 catch   3、 throw   其中关键字try表示定义一个受到监控、受到保护的程序代码块;关键字catch与try遥相呼应,定义当try block(受监控的程序块)出现异常时,错误处理的程序模块,并且每个catch block都带一个参数(类似于函数定义时的数那样),这个参数的数据类型用于异常对象的数据类型进行匹配;而t... 阅读全文

posted @ 2009-05-28 13:15 浪端之渡鸟 阅读(6827) 评论(0) 推荐(1) 编辑

2009年5月27日

摘要: 线程同步的方式有:  临界区  管理事件内核对象  信号量内核对象  互斥内核对象分别介绍如下:使线程同步  在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。  如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就... 阅读全文

posted @ 2009-05-27 16:31 浪端之渡鸟 阅读(521) 评论(0) 推荐(1) 编辑

2009年5月26日

摘要: classTest{ public: intget_value(){returnvalue;} private: intvalue; }; 要求不用友元,不在这个类里添加任何代码,把成员变量k的值改为100,结果自然是通过公共成员函数get_value来验证。 “不在类里添加任何代码”,除了#defineprivatepublic 我实在想不出其它的“偏门... 阅读全文

posted @ 2009-05-26 11:17 浪端之渡鸟 阅读(446) 评论(0) 推荐(0) 编辑

摘要: 1. 隐式和显式初始化1.1 C++隐式初始化int ival(1024);string hello("Hello world.")1.2 C++显式初始化int ival = 1024;string hello = "Hello world." *PS: 注意这里"=" 语法是拷贝构造函数而不是赋值运算!因为一个新对象被定义一定要有一个构造函数而不不是一个赋值操作string hello;hel... 阅读全文

posted @ 2009-05-26 10:52 浪端之渡鸟 阅读(1030) 评论(0) 推荐(0) 编辑

2009年5月25日

摘要: 1、C++中的继承方式有:public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。(1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。(2)privat... 阅读全文

posted @ 2009-05-25 21:23 浪端之渡鸟 阅读(2074) 评论(0) 推荐(0) 编辑

2009年5月22日

摘要: 堆栈详解 什么是堆栈  在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。  堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。  要点:  堆:顺序随意  栈:后进先出(Last-In/First-Out)堆和栈的区别  一、预备知识—程序的内存分配  一个由c/C++编译的程序占用的内存分为以下几... 阅读全文

posted @ 2009-05-22 23:01 浪端之渡鸟 阅读(532) 评论(2) 推荐(0) 编辑

摘要: 字符数组,字符指针,Sizeof总结 1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0"2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc"; 因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"abc",而又因为... 阅读全文

posted @ 2009-05-22 22:59 浪端之渡鸟 阅读(544) 评论(0) 推荐(1) 编辑

2009年4月24日

摘要: <转>申明, 本文由某论坛的一篇帖子整理.记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!#include <iostream>using namespace std;class test{public:static int num;};i... 阅读全文

posted @ 2009-04-24 14:01 浪端之渡鸟 阅读(2014) 评论(0) 推荐(0) 编辑

2009年4月22日

摘要: [代码] 阅读全文

posted @ 2009-04-22 15:54 浪端之渡鸟 阅读(674) 评论(5) 推荐(0) 编辑

2009年4月20日

摘要: 问题描述:大部分的vs.net2005的用户在新建“win32项目-windows应用程序”的时候,新建的工程都通不过去,出现如下提示:Solutionto“MSVCR80D.dllnotfound”byhua.“没有找到MSVCR80D.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”的完美解决方案^_... 阅读全文

posted @ 2009-04-20 21:45 浪端之渡鸟 阅读(352) 评论(0) 推荐(0) 编辑

2009年4月14日

摘要: 通信Server: [代码]client:[代码] 阅读全文

posted @ 2009-04-14 15:12 浪端之渡鸟 阅读(4427) 评论(2) 推荐(0) 编辑

2009年3月30日

摘要: 外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!例如:a b 两个表a表中存有客户号,客户名称b表中存有每个客户的订单有了外键后你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。指定主键关键字: foreign key(列名)引用外键关键字: r... 阅读全文

posted @ 2009-03-30 11:41 浪端之渡鸟 阅读(5938) 评论(1) 推荐(1) 编辑

2009年3月26日

摘要: 三种方法,拿项目中的代码来说明:一:引用传递二:指针传递三:获得父窗口对于三就不多说了,对于一二,看代码便知,引用:CGroupAdvance* dlg = new CGroupAdvance(m_OtherListCtr);dlg -> DoModal();delete dlg;指针:CGroupAdvance* dlg = new CGroupAdvance(&m_OtherLi... 阅读全文

posted @ 2009-03-26 17:27 浪端之渡鸟 阅读(259) 评论(0) 推荐(0) 编辑

2009年3月16日

摘要: VS2005断点失效的问题 - [非原创]VS2005下使用VC,部分断点无效,显示『当前不会命中断点。还没有为该文档加载任何符号』。试过以下一些方法:1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』;2、项目->属性->配置属性->链接器->调试->生成调试信息,... 阅读全文

posted @ 2009-03-16 17:39 浪端之渡鸟 阅读(1667) 评论(0) 推荐(0) 编辑

2009年3月9日

摘要: strlen与sizeof的区别1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针... 阅读全文

posted @ 2009-03-09 14:50 浪端之渡鸟 阅读(473) 评论(0) 推荐(0) 编辑

2009年3月3日

摘要: C++箴言:绝不重定义继承的非虚拟函数2005-11-16 08:58作者:fatalerror99出处:BLOG责任编辑:方舟  假设我告诉你 class(类)D 从 class(类)B publicly derived(公有继承),而且在 class(类)B 中定义了一个 public member function(公有成员函数)mf。mf 的参数和返回值类型是无关紧要的,所以我们就假设它们... 阅读全文

posted @ 2009-03-03 16:47 浪端之渡鸟 阅读(378) 评论(0) 推荐(0) 编辑

摘要: max (Direct3D 9 HLSL)Selects the greater of x and y.Syntaxret max(x, y)Where:NameIn/OutTemplate TypeComponent TypeSizexinscalar, vector, or matrixfloat, intanyyinsame as input xfloat, intsame dimensio... 阅读全文

posted @ 2009-03-03 10:12 浪端之渡鸟 阅读(622) 评论(0) 推荐(0) 编辑

摘要: 16.7内建函数HLSL有一个丰富的内建函数的集合,它们对3D图形来说非常有用。下表是一个删减了的列表,注意:要得到更多的参考,可以参看DirectX文档中内建HLSL函数的完整列表。以下表格中,//<variable>//表示变量variable的模(例如向量的绝对值)。函数描述abs(x)返回 |x|ceil(x)返回 ≥ x 的最小整数clamp(x, a, b)Clamp... 阅读全文

posted @ 2009-03-03 10:11 浪端之渡鸟 阅读(626) 评论(0) 推荐(0) 编辑

摘要: 16.4关键字、语句和强制转换16.4.1 关键字为便于参考,这里给出一个HLSL定义的关键字列表:asm bool compile const decl dodouble else extern false float forhalf if in inline inout int matrix out pass pixelshader return sampler shared static s... 阅读全文

posted @ 2009-03-03 10:11 浪端之渡鸟 阅读(878) 评论(0) 推荐(0) 编辑

摘要: 注意:除了下列各小节中描述的类型外,HLSL还有一些内建的对象类型(如:纹理对象)。16.3.1 数值类型HLSL支持下列数值类型(scalar type):bool—True or false value. Note that HLSL provides the true and false keywords.int—32bit signed integerhalf&md... 阅读全文

posted @ 2009-03-03 10:10 浪端之渡鸟 阅读(541) 评论(0) 推荐(0) 编辑

摘要: SetMatrixTranspose—Used to set a transposed 4 × 4 matrix. Sample call: D3DXMATRIX M(…); D3DXMatrixTranspose(&M, &M); ConstTable->SetMatrixTranspose(Device, handle, &M... 阅读全文

posted @ 2009-03-03 10:09 浪端之渡鸟 阅读(848) 评论(0) 推荐(0) 编辑

摘要: 16.2.1 常量表每个着色器有一个常量表,用来保存它的变量。D3DX库通过ID3DXConstantTable接口,提供给应用程序访问着色器的常量表。通过这个接口我们能够在应用程序中设置着色器源代码中的变量。我们现在描述ID3DXConstantTable接口的方法列表的实现,全部的列表请查阅Direct3D文档。16.2.1.1 取得常量句柄为了在应用程序中设置着色器中的一个特定变量,需要有一... 阅读全文

posted @ 2009-03-03 10:07 浪端之渡鸟 阅读(660) 评论(0) 推荐(0) 编辑

摘要: 在我们写的程序里顶点和像素是很小的对象,它们由GPU来执行,是固定功能管线的一部分。用我们自己写的着色器程序替换一部分固定功能管线,在绘制效果上我们获得很大的灵活性。我们不再局限于预定义的"固定"操作。为了编写着色器程序,我们需要一种高级着色器语言(High-Level Shading Language ,简称HLSL)。 在DirectX 8中,着色器是用低级着色器汇编语言编写的。幸运的是,我们... 阅读全文

posted @ 2009-03-03 10:05 浪端之渡鸟 阅读(1071) 评论(1) 推荐(0) 编辑

2009年3月2日

摘要: 在D3D环境下进行2D图形绘制。D3DImage类:这个类是是用来载入图片,绘制图片。 //----------------------------------------------------------------------------- //文件:D3DImage.h //描述:D3DImage类的头文件,定义变量,函数。 //------------------------------... 阅读全文

posted @ 2009-03-02 11:32 浪端之渡鸟 阅读(2604) 评论(2) 推荐(0) 编辑

2009年2月25日

摘要: sdk的框架借用一下·先看一下完整的程序[代码]立方体共有8个顶点,其中一个点被三个面共用,开始写的代码很麻烦,一共24个顶点,索引也排列到23·如果按共用顶点计算就很简单了,要注意是按顺时针排列的,要把索引的顺寻排好,要不图形会不完整的 阅读全文

posted @ 2009-02-25 16:25 浪端之渡鸟 阅读(594) 评论(0) 推荐(0) 编辑

2009年2月23日

摘要: 加载.x文件.x 文件是由3dsmax导出的,专门被direct3D使用。一个.x文件包含:n 个 D3DXMATERIAL 类型的数据,每个D3DXMATERIAL包含一个D3DMATERIAL9 和 一个texture文件的路径。也就是说一个.x文件包含n个material 和 n 个texture文件路径。 加载过程如下:LPD3DXBUFFERpMeshMaterialsBuffer=NU... 阅读全文

posted @ 2009-02-23 16:02 浪端之渡鸟 阅读(942) 评论(0) 推荐(0) 编辑

2009年2月20日

摘要: 撰写本文目的是将规则引擎的标准整理成大家都可以用来做实际参考的东西。其实这并不是目前我做的游戏引擎,这几乎跟我的引擎完全不沾边,因为这些只是方法,思想,还有经验。我只是想让大家知道规则引擎的水深,还想让大家了解一些制作核心规则的思想。让大家了解什么是规则和科学的制作方法。 我先说说我的引擎观,明确以下几个问题。 为什么要将游戏规则和图形引擎分开? 分开是因为可以比较直... 阅读全文

posted @ 2009-02-20 09:37 浪端之渡鸟 阅读(1009) 评论(0) 推荐(0) 编辑

2009年2月19日

摘要: 在看有些教程的时候经常会遇到旋转角度的问题,一般是这样: FLOAT theta = ( 2 * D3DX_PI * i ) / ( 50 - 1); float theta = (i-1)*12*D3DX_PI/180; 。。。。反正就类似于此·角度是怎么计算的呢,圆周是2*d3dx_pi,要把一个圆周n等分,则每个角度为2*d3dx_pi / n,( 2 * D3DX_PI * i ) / ... 阅读全文

posted @ 2009-02-19 11:06 浪端之渡鸟 阅读(318) 评论(0) 推荐(0) 编辑

2009年2月10日

摘要: 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其编译结果。 实例一: #include "stdafx.... 阅读全文

posted @ 2009-02-10 16:37 浪端之渡鸟 阅读(888) 评论(2) 推荐(0) 编辑

2009年2月6日

摘要: 相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy()表头文件: #include 定义函数: void *memcpy(void *dest, const void *src, size_t n)函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的... 阅读全文

posted @ 2009-02-06 15:38 浪端之渡鸟 阅读(1316) 评论(0) 推荐(0) 编辑

2009年1月8日

摘要: 以前没注意过,今天遇到这个问题,举例如下: 环境vs2005,c++ typedef struct { int iFileCode; //文件标识 double dbMMax; } SHPHEADER1 //获得索引文件记录偏移量相对文件头 if (iRecord == 1 ) iOffset = sizeof(SHPHEADER1); iOffset = 16, 如果... 阅读全文

posted @ 2009-01-08 15:33 浪端之渡鸟 阅读(452) 评论(0) 推荐(0) 编辑

2009年1月6日

摘要: 在C语言中进行文件操作时,我们经常用到fread()和fwrite(),用它们来对文件进行读写操作。下面详细绍一下这两个函数的用法。 我们在用C语言编写程序时,一般使用标准文件系统,即缓冲文件系统。系统在内存中为每个正在读写的文件开辟“文件缓冲区”,在对文件进行读写时数据都经过缓冲区。要对文件进行读写,系统首先开辟一块内存区来保存文件信息,保存这些信息用的是一个结构体,将这个结构体type... 阅读全文

posted @ 2009-01-06 16:43 浪端之渡鸟 阅读(8471) 评论(0) 推荐(0) 编辑

摘要: basic_string::max_size 返回string 能放的最大元素个数。(不同于capacity) size _ type max _ size( ) const; basic_string ::size_type cap, max; cap = s.capacity ( ); max = s.max_size ( ); // max=4294967294. basic_... 阅读全文

posted @ 2009-01-06 15:25 浪端之渡鸟 阅读(586) 评论(0) 推荐(0) 编辑

摘要: 发现有时候真傻·竟然在 CMyLegend* pLayerView =(CMyLegend*) m_wndSplitter1.GetPane(0,0); 后面加了个delete pLayerView ;不是new出来的指针是不用删除的 阅读全文

posted @ 2009-01-06 10:43 浪端之渡鸟 阅读(283) 评论(1) 推荐(0) 编辑