C++ 友元
    
                
摘要:友元 == 有缘。没错~有缘之后可以做很多事情,比如去你家蹭吃蹭喝..C++中 类的友元(包括友元函数,友元类),可以访问该类的私有和继承变量。虽然破坏了封装性,却也为编程提供了便利。是一种共享数据的方式之一(除此之外还有,静态数据,全局变量)。下面描述友元应用的场景:现在有两个类A,B。B需要获取A中的private数据,有两种方式,通过接口获取数据,或者B(或其成员函数)成为A的友元直接访问数据。假设,调用数据非常频繁,这时使用友元就可以提高效率。但是,当A中的数据结构发生改变时,B的函数也要发生相应改变。接口的好处~封装的威力XD友元函数:在要成为其友元的类中声明该函数,并在函数前增加f
        
阅读全文
                    posted @ 
2012-12-29 23:23 
曾健
        
阅读(254) 
         
        推荐(0)     
                 
                
                
    C++ 类的静态数据成员&静态成员函数
    
                
摘要:静态数据成员通常,每个对象都有各自的数据拷贝。(一个类实例化后,各个对象的数据是不相干的)但是有些情况,要求多个对象共享一个数据时,我们需要用到静态数据成员。具体使用方法是:在类中声明数据成员时,在前面加上关键词static 。例如 satatic int count;//表示count是静态数据成员这样每个不同的类对象就共享同一个count。初始化时要注意,必须使用类名引用,然后初始化。类似于int man::count = 1;ps:为什么不用全局变量?答:使用全局变量破坏了类的封装性,徒增麻烦。至于破坏封装性为什么会惹麻烦找时间再研究吧...静态成员函数静态成员函数可以解决由静态数据成员
        
阅读全文
                    posted @ 
2012-12-29 22:51 
曾健
        
阅读(225) 
         
        推荐(0)     
                 
                
                
    C++构造函数
    
                
摘要:普通变量可以使用赋值号(=)赋值,但是由于类的数据成员众多,所以使用构造函数用于构造对象。构造函数也是类的成员函数,除了有成员函数的所有特征外,还有一些不同之处:构造函数的函数名跟类名一样,而且没有返回值。构造函数一般被声明为公有函数,除非我们不允许某个类生成对象则将它声明为private或protected属性。编译器碰到对象声明语句时,会自动生成对构造函数的调用语句,所以我们常说构造函数是在对象声明时由系统自动调用的。构造函数为成员变量赋值的方式有两种:1.初始化列表 2.在函数体内赋值在对一般变量初始化时,两种方式并没有太大区别。但是当类的成员变量是另一个类时(嵌套类),只能使用初始化列
        
阅读全文
                    posted @ 
2012-12-29 15:10 
曾健
        
阅读(173) 
         
        推荐(0)     
                 
                
                
    C++ const关键词
    
                
摘要:const可以看做是弥补#define的不足而出现的。显然它的功能已经大大超过了#define。const可使用与变量与函数还有指针,引用,其实质都是一样“使不改变”。const用于变量与对象:const int test = 1;//用于普通变量,相当于#define test 1 //这样,test就是常量了,并且与#define相比,它可以参加逻辑运算。//用于类对象class A{ public: int num;};int main(){ const A testA; testA.num = 1;//报错,const对...
        
阅读全文
                    posted @ 
2012-12-25 17:49 
曾健
        
阅读(160) 
         
        推荐(0)     
                 
                
                
    平安夜的礼物
    
                
摘要:谢谢你让我知道这件事情,这是我这两年听到最美丽的话。希望你会幸福best wish :-)
        
阅读全文
                    posted @ 
2012-12-25 09:54 
曾健
        
阅读(139) 
         
        推荐(0)     
                 
                
                
    第一篇
    
                
摘要:学期末了,怕到时又挂科了,赶紧拿起书来看。今晚看了离散数学前两章,集合还有计数问题。深深体会离散真是一门伟大的学科。我感觉下面这几个东西钻透了(非概念性理解)就是大神啦1.加法原理2.乘法原理3.鸽笼原理4.容斥原理5.排列组合
        
阅读全文
                    posted @ 
2012-12-24 20:40 
曾健
        
阅读(156) 
         
        推荐(0)     
                 
                
                
    C++函数基础知识
    
                
摘要:【这里只是记录一些比较容易忽略的知识点。】内联函数内联函数的出现,解决了两个技术问题。1.当函数需要频繁调用,且函数体较短时,调用函数的开销(保存现场与返回地址)比函数本身的价值相比性价比不高。这时使用内联函数,直接把函数体嵌入到相应的代码位置,更有优势。2.其实宏定义(#define)也可以解决1中的问题,但是宏定义往往在传递参数时会让人迷惑。不利于代码维护,阅读。内联函数能解决宏定义带来的不确定性。内联函数的定义形式inline 类型标示符 函数名(参数列表){函数体};使用内联函数注意事项对于一个函数来说,是否是内联函数,是由编译器决定的。如果我们在函数面前加上inline关键词,只是表
        
阅读全文
                    posted @ 
2012-12-23 14:56 
曾健
        
阅读(369) 
         
        推荐(0)     
                 
                
                
    C++联合体的内存使用
    
                
摘要:联合体占用内存大小是根据其最大元素所需要的内存所决定的,这就意味着,有下面的例子..#include <iostream>using namespace std;union test{ int k; struct{int x, int y,int z}a;}b;int main(){ b.a.x = 1; b.a.y = 2; b.a.z = 3; b.k = 0; cout<<b.a.x<<b.a.y<<b.a.z<<endl; return 0;}程序的输出结果是 023 ,而不是 123。这是因为,union是共用内存,后来的赋
        
阅读全文
                    posted @ 
2012-12-20 01:01 
曾健
        
阅读(1827) 
         
        推荐(0)     
                 
                
                
    使用eclipse新建一个SWT工程
    
                
摘要:照着eclipse的引导教程,新建一个swt的hello world程序。我是一步一步跟着做的,但是编译通过却运行报错。在网上找到了相似的情况,解决了,于是贴在这里。问题:n a WinDoze 7 Pro 32-bit machine, if I follow the instructions for creating a Hello World SWT example, it will work for Helios, but when I try it on Indigo, it fails with the following message:Code: [Select all] [S
        
阅读全文
                    posted @ 
2012-12-10 19:48 
曾健
        
阅读(2896) 
         
        推荐(1)     
                 
                
                
    D3D窗口的初始化
    
                
摘要:要初始化一个D3D窗口需要以下步骤1.填充一个DXGI_SWAP_CHAIN_DESC结构体 也就是用来描述你所要创建的交换链的特性。 (交换链的特性有:BufferDesc:描述了后台缓冲区的宽、高、像素格式等属性。SampleDesc:描述了多重采样数量的质量级别,在龙书中统一设为1,0。BufferUsage:设为DXGI_USAGE_RENDER_TARGET_OUTPUT,表示为将场景渲染到后台缓冲区。BufferCount:交换链中后台缓冲区数量,一般只用一个后台缓冲区实现双缓存。OutputWindow:将要渲染到的窗口句柄。SwapEffect:设为DXGI_SWAP_EFFE
        
阅读全文
                    posted @ 
2012-12-08 16:08 
曾健
        
阅读(2269) 
         
        推荐(0)     
                 
                
                
    Dx10 学习buffer
    
                
摘要:这个程序是一个3D的彩色立方体,用到的知识点很简单。使用的是《DirectX 3D 游戏编程入门》(我习惯称为龙书,下文同)的框架。下面只是其中一些步骤中的要点,并无逻辑关联。1.buffer的建立。buffer的描述buffer是什么就不说了,很多书都有定义。D3D的buffer使用D3D10_BUFFER_DESC结构体描述,也即是我们每次建立一个新的buffer,都要建立相对应的DESC结构体。由于龙书是入门性质的书籍,所以作者只给我们介绍了几个对应的参数含义。他们分别是:UsageByteWidthBindFlagsCPUAccessFlags MiscFlags。意义依次为,buff
        
阅读全文
                    posted @ 
2012-12-07 13:36 
曾健
        
阅读(308) 
         
        推荐(0)     
                 
                
                
    C++类的构造函数
    
                
摘要:转自百度文库问题我的问题是关于初始化C++类成员的。我见过许多这样的代码(包括在你的栏目中也见到过):CSomeClass::CSomeClass(){x=0;y=1;}而在别的什么地方则写成下面的样子:CSomeClass::CSomeClass():x(0),y(1){}我的一些程序员朋友说第二种方法比较好,但他们都不知道为什么是这样。你能告诉我这两种类成员初始化方法的区别吗?回答从技术上说,你的程序员朋友是对的,但是在大多数情况下,两者实际上没有区别。有两个原因使得我们选择第二种语法,它被称为成员初始化列表:一个原因是必须的,另一个只是出于效率考虑。让我们先看一下第一个原因——必要性。设
        
阅读全文
                    posted @ 
2012-12-06 11:59 
曾健
        
阅读(322) 
         
        推荐(0)     
                 
                
                
    D3D编程的常见报错及解决
    
                
摘要:d3dapp.cpp(136): error C2664: 'wcscpy' : cannot convert parameter 1 from 'CHAR [32]' to 'wchar_t *'1> Types pointed to are unrelated;这是用龙书会出现的常见错误,把Character set改成Unicode或者多字节字符集试试~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
        
阅读全文
                    posted @ 
2012-12-02 22:41 
曾健
        
阅读(1670) 
         
        推荐(0)