- 博客(22)
- 资源 (24)
- 收藏
- 关注
转载 STL — — string
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字
2012-11-30 13:48:44 371
原创 auto_ptr
C++提供了std::auto_ptr,即“智能指针”,是个“类指针(pointer-like)对象”,其析构函数自动对其所指对象调用delete,因此auto_ptr充当资源管理者的角色,属于管理对象,而且用被管理对象进行初始化。 如果多个auto_ptr同时指向同一对象,对象会被删除一次以上,会出现“未定义行为”。为了预防这个问题,auto_ptr有一个不寻常的性质:若通过拷贝构
2012-11-28 16:37:13 347
原创 拷贝对象应注意的地方
拷贝对象主要涉及两个函数,一个是拷贝构造函数,一个是赋值运算符。1、拷贝构造函数应该确保复制“对象内的所有成员变量”和“所有基类的成分”。2、最好不要在拷贝构造函数中调用赋值运算符,或者赋值运算符中调用拷贝构造函数: 赋值运算符中调用拷贝构造函数,就好像试图构造一个已经存在的对象;构造函数用来初始化新对象,而赋值运算符只适用于已经初始化的对象。
2012-11-28 15:57:35 487
转载 UML——关系连连看
对UML中图的关系进行总结和理解,以便后边更好的画图 进行铺垫,进而对后面的9种图用一个更深入的理解。1、关系(1)依赖关系(Dependency) A类依赖于B类也就是说,A类会用到B类。B类的变化会影响到A类。依赖的关系是具有偶然性的、临时性的、非常弱的。UML中用带箭头的虚线表示。注意:箭头指向被依赖方(2)泛化关系(Generalization)
2012-11-27 22:10:55 588
原创 基类的作用
基类的设计目的,最重要的一点是实现多态性,通过虚函数和继承机制,实现基类指针指向不同的子类对象,或者说“通过基类接口处理子类对象”; 但是,并非所有的基类的设计目的都是为了多态用途,比如为了实现类中的拷贝构造函数和赋值运算符不被调用的基类uncopyable; 还有,有些类都不被设计为基类,比如标准string和STL容器都不被设计作为基类使用,当然也更不用谈多
2012-11-26 21:29:10 3683
原创 析构函数调用顺序
构造函数的调用顺序是,首先是虚基类,然后是非虚基类;首先是基类,然后是子类。 non-virtual析构函数的调用顺序是,首先是当前对象或指针所对应的对象(不一定是指针所指向的对象哦,比如基类指针所对应的对象是基类,所指向的对象是子类),然后是基类对象。 virtual析构函数的调用顺序是,首先是当前对象或指针所指向的对象,然后是基类对象。
2012-11-26 18:34:58 576
原创 如何不允许调用对象的拷贝构造函数和赋值运算符
C++中,如果不自定义对象的拷贝构造函数和赋值运算符,编译器会为该类添加默认的拷贝构造函数和赋值运算符,而且都是public。 但是,有时候我们不希望编译器管太多“闲事”,比如,我们定义一个类,不允许进行拷贝,不允许调用拷贝构造函数和赋值运算符,那该怎么办呢? 那么,我们就希望,如果调用的此类的拷贝构造函数或者赋值运算符,编译器能够报错。我们可以采用,把拷贝构造
2012-11-26 17:54:53 1103
原创 引用类型和const类型的成员变量
1、引用类型的成员变量,在构造函数中初始化,但是不能重新赋值,因为c++中不允许“reference”更改指向不同的对象。2、const类型的成员变量,在构造函数中初始化,但是不能重新赋值,因为c++中更改const变量是不合法的。
2012-11-26 17:15:45 962
转载 网游UI解决方案的选择
作者 鸣·铭 转载请注明出自http://www.mobilegamebase.com 由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)1.沿用当前的UI 公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至少是经过几十万玩家测试
2012-11-23 20:18:40 1382
原创 const成员函数如何调用non-const成员变量
比如,成员函数std::size_t getSize()const;成员变量std::size_t mSize; 正常情况下getSize函数直接返回mSize是没有问题的;但是,如果进行mSize++操作就是是错误的,因为编译器总是认为你可能会改变mSize的内容,纵使有时候你不会去改变。不过,我们把mSize设为mutable,即mutablestd::size_t mS
2012-11-23 13:35:00 815
原创 参数传递深入分析
C++参数传递分为两种:pass-by-value和pass-by-reference。二者适合不同的场合,在数据为只读的情况下讨论如下:1、对于内置类型,比如int,pass-by-value更高效;2、对于自定义类型,比如class,pass-by-reference-const更好,因为class有构造函数和析构函数,按值传递,需要构造一个对象的副本,传递的是对象的一个副本,需要
2012-11-23 13:19:59 452
原创 const iterator与const_iterator
const iterator表示iterator是const的,即iterator本身不能改变或者说iterator指针不能改变,但是iterator所指向的内容可以改变。比如, const std::vector::iterator iter = vec.begin(); *iter = 10;是对的,改变iter指向的内容;但是++iter是错误的,因为
2012-11-23 12:21:25 1574
原创 const指针
const与指针结合,实际意义见下面的例子: char ch[] = "ch"; char* ptr = ch; // non-const pointer, non-const data const char* ptr = ch; // non-const point
2012-11-23 12:03:54 533
原创 C++组成部分
C++是一种编程语言,但又不是一种单一的编程语言,它可以包含以下四种子语言,也即C++的四个组成部分:1、C部分。C语言的基本语法,内置类型、预处理、数组、指针等。2、面向对象部分。类,封装、继承、多态、虚函数等。3、泛型编程。以模板为基础,减少运行期时间。4、STL。容器、迭代器、算法等程序库,安全、便捷。
2012-11-23 11:00:36 3077
转载 c++程序员必看的书
C++程序员应看的书,这些书无须全部看了,不过如果你连一本都没阅读过,至少你不是个成熟的C++程序员,要想提升应该对原著有深入理解。纸质书籍类: 1、C++程序设计语言(特别版十周年中文纪念版)2、C++ Primer中文版(第4版)3、深度探索C++对象模型4、C++语言的设计和演化5、C++标准程序库:自修教程与参考手册6、STL源码剖析7、C++设
2012-11-23 09:45:25 2536
原创 Ogre中通过操作硬件缓存来设置透明度
Ogre::PixelUtil::packColour( 0.0f, 0.0f, 0.0f ,0.0f, PF_A8R8G8B8, &pbptr[x]);此句代码实现模型的完全透明。前四个参数分别表示r,g,b,alpha。但是,有的时候设置无效,显示模型为黑色。这种情况下,需要设置对象的混合方式,在材质脚本的pass中设置scene_blend alpha_blend即可。
2012-11-21 09:09:29 802
原创 3ds max中的对象绕局部坐标系旋转的动画
最近在3dsmax中坐旋转的动画,但是出现了一个问题,绕局部坐标系进行旋转之后的动画,出现的效果确是绕全局坐标系旋转,测试了一个上午,终于找到了解决方案。 如下图所示,3dsmax中右侧控制面板中的 “运动” ->“PRS参数”->"创建关键点"->“旋转”, "运动"->“Euler参数”->"轴顺序zxy"->“旋转轴z”,
2012-11-12 14:39:51 10138 2
原创 Ogre中的alpha混合
对材质脚本中的pass进行编辑: scene_blend alpha_blend depth_check off 可以实现当前渲染通道与场景中的内容进行alpha混合,实现一些特殊效果;比如,当前通道的alpha值为1,则最终结果只绘制当前通道的颜色。
2012-11-10 13:15:20 705
原创 天空盒、天空穹和天空面
1、什么天空盒、天空穹、天空面? (a)天空盒,立方体组成的盒子,六个面都有贴图; (b)天空穹,立方体组成的盒子,五个面有贴图,底面没有贴图; (c)天空面,只有一个面,位于上空;2、怎么调用? 天空盒的调用示例: mSceneMgr.setSkyBox( true, "Examples/SpaceSkyBox", 1000,
2012-11-10 12:43:50 2856
原创 3DS MAX分配网格时出错,减少面数以渲染此场景
错误如下: 原因分析: 场景太大物体数太多。 解决方法: 1、检查物体数; 2、检查空物体,空点; 3、重命名材质球; 4、残余痕迹,线段,动作痕迹; 5、用排除法,逐一隐藏物体进行渲染; 6、合并的模型需要检查材质是否是高反射,高采样,高质量
2012-11-04 10:55:31 6971 1
原创 Ogre中设置透明度
Ogre提供强大的材质脚本系统,在*.material材质文件中,可以将参数scene_blend设置为add、modulate、alpha_blend、colour_blend。 设置此渲染通路与场景中现有的内容混合的方式。这种混合就允许物体透明和其他特殊效果。有两种形式可供选择使用:一是使用预定义混合形式;二是使用自定义的办法,源因数和目标因数都有你自己DIY。格式1: s
2012-11-01 15:39:16 2067
Huffman编码
2012-04-25
C&C++优秀书籍
2012-03-18
精通Qt4编程
2012-03-18
ACIS系统简介
2011-10-08
查找算法的多种方法的源文件集合
2009-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人