C/C++编程
文章平均质量分 60
dazhong159
这个作者很懒,什么都没留下…
展开
-
C++基本数据类型直接的转换
1、unsigned int转换为int(内容不变,但是要分正负号) unsigned int a = 65535; //11111111 11111111 11111111 11111111(原码) int b=a; //b = -1 //10000000 0000000000000000 00000001(补码) 2、int、long转原创 2012-08-03 16:57:05 · 3809 阅读 · 0 评论 -
C/C++内存分配
1、c/c++内存分配1、栈区:由编译器自动分配和释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区:一般由程序员分配和释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事。3、全局(静态)数据区:全局变量和静态变量的存储是放在一块的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一转载 2012-08-23 17:09:19 · 1978 阅读 · 0 评论 -
获取窗口句柄
1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include #include #include #include int main(int argc, char* argv[]){ //根据窗口名获取QQ游戏登录窗口句柄 HWND hq=FindWindow(NULL,"QQ2原创 2012-08-24 12:26:47 · 42108 阅读 · 6 评论 -
四种强制转换
1、dynamic_cast dynamic_cast支持运行时识别指针或者引用所指向的对象2、const_cast const_cast,转换掉表达式的const属性3、static_cast 编译器执行的任何隐式转换都可以由static_cast显示完成4、reinterpret_cast 任何指针都可以转换成为其它类型的指针慎用原创 2012-08-07 17:18:00 · 704 阅读 · 0 评论 -
C++管理指针成员
1、C++中一般采用下面三种方法之一管理指针成员: (1)指针成员采取常规行为。这样的类具有指针的所有缺陷:具有指针成员且使用默认复制构造函数和赋值操作符,无法避免悬垂指针(两个对象的指针成员指向同一内存,删除了其中一个指针指向的内存时,另一个指针将不再指向有效的内存空间)。 (2)类可以实现所谓的"智能指针"行为。引入计数类,智能指针类将一个计数器与类的对象相关联。使用计数跟原创 2012-08-24 16:29:14 · 1114 阅读 · 0 评论 -
C++虚函数表解析(转) ——写的真不错,忍不住转了
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的转载 2012-08-25 13:32:27 · 1974 阅读 · 0 评论 -
运算符重载
1、赋值运算符=2、等于运算符==3、加法运算符+4、前向自加运算符++5、后向自加运算符++6、下标运算符[ ]7、输入输出运算符>8、转换运算符( )9、实例代码#include #include #include using namespace std;class A;ostream& operator<<(ostream &out,A &原创 2012-07-28 23:10:57 · 484 阅读 · 0 评论 -
根据指定窗口句柄进行截屏
1、获取窗口句柄 见http://blog.csdn.net/dazhong159/article/details/79033822、截屏函数代码(包含截屏类和调用示例) Screen.h头文件如下:#ifndef __CSCREEN_H__#define __CSCREEN_H__#include class CScreen{public: ch原创 2012-08-26 21:08:25 · 20436 阅读 · 2 评论 -
C++顺序容器vector、deque、list
1、容器元素类型 C++中大多数数据类型可以作为容器的元素类型。容器元素类型必须满足一下两个条件:支持赋值和复制操作。 所以没有元素是引用类型的容器,同时IO对象和auto_ptr也不能作为容器的元素类型。2、vector容器的自增长 vector容器中存储的元素在内存中是连续存储的。假如容器中没有空间容纳新元素,此时由于元素必须连续存储以便索引访问,所以不能在内原创 2012-08-24 15:08:03 · 2146 阅读 · 0 评论 -
类String的构造函数、析构函数和赋值函数
1、代码如下: 注意:形参加上const修饰符,函数体里面判断参数是否为NULL,引用不能为空等。 复制操作符应该判断是否是自赋值。 重载输入操作符时,要注意给data分配足够的空间,现在还没有想到太好的办法,用的是临时变量,这里一直不是很明白C++中的(string s; cin>>s;)到底最大可以读取多少个字符,其原理又是怎么实现的呢。 友元函数有时候原创 2012-08-22 09:52:36 · 3472 阅读 · 3 评论 -
类成员函数的重载、重写、和覆盖区别
1、类成员函数的重载、重写、和覆盖区别 a.成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual关键字可有可无。 b.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (原创 2012-08-08 17:48:50 · 10002 阅读 · 1 评论 -
多重继承
1、相同基类继承的二义性 多个子类同时继承与同一个基类后,其派生类在访问基类成员时,会出现二义性问题,因为派生类无法选择继承路径。解决办法,通过使用虚拟继承可以解决这类二义性问题。#include #include #include using namespace std;class A{public: int a;}; class B:publi原创 2012-08-07 13:03:22 · 546 阅读 · 0 评论 -
面向对象----类的继承
1、派生类对象的构造与析构 创建派生类对象的时候首先调用基类的构造函数初始化基类成员,随后才调用派生类构造函数 派生类对象的析构过程首先是调用派生类的析构函数,再调用基类的析构函数2、多重继承 B、C都继承于A,而D继承于B和C 多重继承的两义性:当D的对象调用A中的成员时就会产生两义性(D-B-A还是D-C-A) 使用虚继承就可以消原创 2012-07-28 23:06:40 · 647 阅读 · 0 评论 -
求数组中第二大的数
1、代码如下:#include "stdafx.h"#include #include "string.h"#include int find_sec_max( int data[] , int count){ int maxnumber = data[0] ; int sec_max = 0 ; for ( int i = 1 ; i < count ; i++) {原创 2012-08-08 22:08:38 · 1666 阅读 · 0 评论 -
约瑟夫环
1、编号为1到N的N个人围着圆桌按序号坐着,从编号为1的人开始循环数数,数到M时对应的人离开座位,求最后剩下的那个人的编号?代码如下:#include "stdafx.h"#include #include //编号为1到N的N个人围着圆桌按序号坐着,从编号为1的人开始循环数数,数到M时对应的人离开座位,求最后剩下的那个人的编号#define M 4 #define N原创 2012-08-09 21:20:26 · 851 阅读 · 0 评论 -
指针数组与数组指针
1、指针数组与数组指针 int *p[10]; //一个包含10个int指针的数组 int (*p)[10]; //一个指向具有10个int的数组的指针2、函数指针 int (*p)(int i); //定义一个函数指针 int func(int i){return i;} p=func;原创 2012-07-28 21:33:11 · 391 阅读 · 0 评论 -
遗传算法原理与应用详解
遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。一.进化论知识 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。 个体:组成原创 2012-08-26 10:47:56 · 38829 阅读 · 2 评论 -
面向对象----类基础知识
1、static和const变量 static变量是类的所有对象所共享的,他必须在类的外面定义和初始化,计算类的内存大小时不用考虑static变量 const变量只能在类的初始化函数列表中进行初始化 const static变量一般在类的外面定义和初始化2、空类的大小是1 空类的大小是1,那是被编译器插进去的一个char ,使得这个class的不原创 2012-07-28 22:48:44 · 611 阅读 · 0 评论 -
一般的函数指针和类的函数指针
1、函数指针简介 函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。2、函数指针用法 调用函数:原创 2012-08-07 14:39:14 · 604 阅读 · 0 评论 -
句柄
1、句柄概念 句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标示应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是wi原创 2012-08-21 21:55:03 · 639 阅读 · 0 评论 -
指针和引用
1、引用注意事项 引用必须初始化 引用初始化指向一个对象之后就不能再指向别的对象 引用不能为空 返回引用的函数可以作为左值来计算 不能声明void类型的引用 int a=10; void &p=a; //error 不能声明引用数组 int a[10]; int p[10]=a //原创 2012-07-28 21:24:03 · 469 阅读 · 0 评论