C/C++
进度条控件
摘要: Style Description
PBS_SMOOTH //平滑
PBS_VERTICAL //垂直
响应消息
PBM_DELTAPOS //一个进度条由一个指定的增量当前位置和重绘栏,以反映新的位置。
wParam=(的WPARAM)nIncrement
lParam = 0;
返回原来的位置。
阅读全文
posted @
2011-11-30 20:42 Yu_ 阅读(773) |
评论 (0) 编辑
C++读写流
摘要: 和C语言不同,C++对文件的操作有自己的方法。
C++对文件的操作主要是通过两个类(ofstream---向文件中写入数据。ifstream----从文件中读取数据),通过指定类中的变量取值来达到对文件的操作。
ofstream类的构造函数(有好几个,这个用的最多)ofstream::ofstream
ofstream( const char* szName, int nMode = ios::out, int nProt = filebuf::openprot )
szName:指定将要打开的文件名
nMode:指定打开的方式,有以下几种取值
阅读全文
posted @
2011-11-30 20:40 Yu_ 阅读(425) |
评论 (0) 编辑
关于类的作用域 (全局域 、类域、作用域)
摘要: (1)、成员函数
成员函数有一个非成员函数不具有的属性——它的类itsclass 指向成员函数的指针必须与向其赋值的函数类型匹配不是两个而是三个方面都要匹配:
1 参数的类型和个数2 返回类型3 它所属的类类型
例如类screen:short Screen::*ps_Screen = &Screen::_height;
数据成员指针在被用来访问数据成员之前必须先被绑定到一个对象或指针上
// 所有指向类成员的指针都可以用0 赋值
int (Screen::*pmf1)() = 0;
int (Screen::*pmf2)() = &Screen::height;//或者可以这样写:int Screen::*pmf2 = &Screen::height;
注意:静态类成员指针是该类的全局对象和函数,引用的是普通指针
(2)作用域
1.全局域、类域、局部域的区别
阅读全文
posted @
2011-11-30 20:33 Yu_ 阅读(715) |
评论 (0) 编辑
C++的一些基础
摘要: 一、类型转换
1、强制类型转换::类型不同,而且不属于基本数据类型(int double...)时,经常需要强制类型转换
①、显示强制类型转换
TYPE b = (TYPE) a;
C++中强制类型转换函数有4个:
const_cast(用于去除const属性),
static_cast(用于基本类型的强制转换),
dynamic_cast(用于多态类型之间的类型转换),
阅读全文
posted @
2011-11-30 20:32 Yu_ 阅读(385) |
评论 (0) 编辑
C/C++内存中的数据对齐问题
摘要: 数据对齐,是指数据所在的内存地址必须是该数据长度的整数倍。比如DWORD数据的内存其实地址能被4除尽,WORD数据的内存地址能被2除尽。x86 CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据时,会在内部进行一系列的调整,这些调整对于程序来说是透明的,但是会降低运行速度,所以编译器在编译程序时会尽量保持数据对齐。
阅读全文
posted @
2011-10-01 10:13 Yu_ 阅读(534) |
评论 (0) 编辑
虚函数和多态 (二)
摘要: 是允许将父对象设置成为和一个或多个它的子对象相等的技术,比如Parent:=Child; 多态性使得能够利用同一类(基类)类型的指针来引用不同类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作.
c++中多态更容易理解的概念为
阅读全文
posted @
2011-09-30 23:17 Yu_ 阅读(346) |
评论 (0) 编辑
虚函数和多态 (一)
摘要: 1、什么是虚函数?
①、虚函数必须是基类的非静态成员函数
②、其访问权限可以是protected或public。不能是private ,因为子类继承时,子类不能访问。
③、在编译时是动态联编的::编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序执行时才能确定将要调用的函数,为此要确切知道该调用的函数,要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作被称为动态联编。 动态联编规定,只能通过指向基类的指针或基类对象的引用来调用虚函数
2、定义形式。
virtual 函数返回值类型 虚函数名(形参表)
{ 函数体 }
纯虚函数:virtual 函数名=0
3、虚函数内部机制。
①、每个实例对象里有自己的指针。
②、虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。
③、我们通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。
阅读全文
posted @
2011-09-30 21:58 Yu_ 阅读(346) |
评论 (0) 编辑
类继承和子类型 多继承和虚拟继承
摘要: 关于基类,派生类的相关补充:
1、 派生表中指定的类必须先被定义好,方可被指定为基类。
2、 派生类的前向声明不能包括其派生表,而只需要类名即可。
3、 缺省的继承是private。
4、 继承而来的派生类的虚拟函数一般加上virtual较好,也可以省略。但基类中一定要声明为virtual。
5、 对于基类的静态成员,所有派生类对象都引用基类创建的这个相同,单一,共享的静态成员,而不是创建该派生类的另一个独立的静态成员。
6、 友员关系不会被继承,派生类没有成为“向它的基类授权友谊的类”的友员。
阅读全文
posted @
2011-09-30 16:18 Yu_ 阅读(388) |
评论 (0) 编辑
深拷贝、浅拷贝 与拷贝构造函数的关系
摘要: 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来。虽然都是复制对象,但是不同的复制方法,复制出来的新对象却并非完全一模一样,对象内部存在着一些差异。通常的拷贝方法有两种,即深拷贝和浅拷贝,那二者之间有何区别呢?
我的理解是:
1、深拷贝和浅拷贝之间的区别在于是否复制了子对象。
2、如果一个类拥有资源(堆,或者是其它系统资源),,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之对象存在资源,但复制过程并未复制资源的情况视为浅拷贝。
阅读全文
posted @
2011-09-27 01:24 Yu_ 阅读(365) |
评论 (0) 编辑