- 博客(38)
- 资源 (4)
- 收藏
- 关注
原创 Win32-放大镜DEMO
放大镜Demo主要问题: 1 鼠标捕获: 2 屏幕绘制闪烁核心代码LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ TCHAR szBuffer[1024]; switch (message) { case WM_PAINT: {
2016-01-16 20:33:39 1636 1
转载 跟我一起写Makefile
原文找不到了,全文转载方便查看原作者:陈皓 转载网站网站:酷壳概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的
2014-05-12 16:15:55 396
原创 [Linux高级编程] Makefile简化版
1 语法目标名:依赖目标 @命令 @命令 make的命令行使用 make -f make脚本文件 目标名
2014-05-12 16:14:18 1083
原创 [Linux高级编程]工具&库
1 gcc基本命令 -o 输出文件名 -O -O0 -O1 -O2 -O3 编译优化 -g -g0 -g1 -g2 -g3 产生调试信息 -W all error -Wall 显示
2014-05-02 14:16:59 558
原创 [Linux高级编程]内存管理&映射&分配
1 内存管理1 .1 Linux对内存的描述1.1.1 查看进程信息/proc/$(pid)/ proc存放进程运行时候所有的信息(包括内存结构) 进程查看: ps aue (all user effective)-->获取进程ID查看内存结构:cd proc >> ps aue >>cd PID >> cat maps 结论:任何程序的内存空间分
2014-05-02 14:14:24 540 1
原创 [STL]标准容器
1 STL1.1 通用算法(函数模板) 通用算法依赖迭代器实现,可以从头到尾遍历整个容器的方法 for_each() find find_if count count_if sort copy iterator find(pos_beg, pos_end, data) iterator find_if(pos_beg, pos_end, cond),
2014-05-02 14:11:25 477
原创 [STL]模板(类&函数)
模板模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是类模版,另一个是函数模版。类模板基本用法: template class类名{ ... 类定义 ...
2014-03-17 22:58:19 535
原创 [DS&A]基本排序比较
问题:使用clock函数显示为零#include#include#includeusing namespace std;//冒泡void bubblesort(int a[],int cnt){ bool flag = true; while(flag) { flag = false; for(int i = 1; i < cnt ;i++) { if(a[
2014-03-16 15:39:20 484
原创 [DS&A]二分法查找
二分法查找:适用于有序的顺序序列。#include#include#include#includeusing namespace std;class Person{private: string name; int age; public: Person(const char* name,int age):name(name),age(age){}
2014-03-16 09:31:43 320
原创 [DS&A]二叉排序树
注意:1 递归的使用 2 形参是否使用引用,const的思考下面的代码中尤其注意Insert( ),find( ),remove( )函数的思路及形参,返回值的形式。 //递归实现二叉查找树#include#includeusing namespace std;typedef int T;class bst{ struct N
2014-03-15 23:14:22 431
原创 [DS&A]队列
队列实现:1.使用链表类的组合实现 2.使用数组实现(循环)。下面提供了第二种实现,注意首尾下表的增减公式,另:为什么size()中计算队列的有效个数公式,在下列情况(满队)失效。//数组实现队列--循环队列#includeusing namespace std;const int Max = 5;typedef int T;class qu
2014-03-14 21:00:23 496
原创 [DS&A]栈
栈的实现方式有两种:一种以数组的形式作为存储方式,另一中则以链表形式。第一种较简单不做过多的模拟。注意一个问题: 在一个加了const限定符的成员函数中,不能够调用 非const成员函数。提示错误:.discards qualifiers 的意思就是缺少限定符,为了修改const在linklist.cpp中使用从const_castlinklist.h(修改过)#ifndef
2014-03-13 16:55:05 431
原创 [DS&A]单链表类
关键成员函数:getptr( ),理解为甚么返回类型为 Node*&linklist.h:#ifndef _LINKLIST#define _LINKLIST#includetypedef int T;class linklist{ struct Node { T data; Node *next; Node(T d = T()):data(d),next(0)
2014-03-13 13:11:07 479
原创 dynamic_cast子类转换父类
dynamic_cast可以将子类指针转换为父类指针?#includeusing namespace std;class A{virtual void func(){};};class B:public A{};class C:public B{};class D:public B{};int main(){ A *pa = new B; //父类指针指向子类
2014-03-08 16:57:25 1736
原创 虚函数表验证
为了验证虚函数表的存在://证明虚函数表的存在#include#includeusing namespace std;class A{public : virtual void show(){cout << "function of class A!"<< endl;};};class B{public: virtual void show(){cout <<
2014-03-08 15:20:23 589
原创 [C++_12]IO_2
16.3 字符串IOistringstream / ostringstream : stringstream#include#include#includeusing namespace std;int main(){ string str1,str2,str3; cout << "请输入一行字符:" << endl; getline(cin,str1); istr
2014-03-06 20:16:48 660
原创 [C++_11] IO_1
16 IO16.1 格式化IOC++提供了两种格式控制的方法:一种方法是使用ios类中有关格式控制的成员函数;另一种方法是使用称为可是控制符的特殊类型的函数16.1.1 用ios类的成员函数进行格式控制ios类中有几个成员函数可以用来对输入输出进行格式控制,进行格式控制主要是通过对格式状态字,域宽,填充字符以及输出精度的操作来完成的。16.1.2 格式状态字输入
2014-03-06 16:22:38 849
原创 ?[C++_10]RTTI
15 RTTI(运行时类型识别)程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。注意:g++ RTTI 开启/关闭:-frtti / -fno-rtti 在VC6.0运行时,记
2014-03-04 22:33:31 620
原创 [C++_9]多态_虚函数(表)_纯虚函数
14 多态&虚函数 用基类的指针指向子类的对象,然后通过基类的指针调用实际子类的成员函数,虚函数使基类的指针具有了多态性,这是一种泛型技术,泛型技术就是试图用不变的代码来实现可变的算法。 继承的时候虚函数也会被继承,尽管会被继承,但是还是要养成子类的同名函数也要写上virtual,这样显得直观。 在构造函数和析构函数调用虚函数的时候没有多态,因为子
2014-03-03 18:27:51 550
原创 [C++_8]继承_2
13.4 多重继承与虚继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:pu
2014-03-03 11:50:42 396
原创 [C++_7]继承_1
13 继承13.1 继承与访问权限继承方式对子类内部没啥影响,对外界有影响父类公开成员父类保护成员父类私有成员公开继承子类内部可访问(公开属性)可访问(保护属性)不可访问外界可访问不可访问
2014-03-02 21:17:06 403
原创 [C++_6]运算符重载
12 运算符重载不能重载的操作符: 三目运算符 ? : . 也不能重载只能用成员函数来重载 = -> [] () (类型转换) ()是个函数对象,必须是成员12.1 运算符重载方法运算符重载函数分为两种:1成员函数 2友元函数声明如下:ostream& operatorfriend ostream& operator友元函数总比成员函数
2014-03-02 13:41:09 444
原创 [C++_5]友元_临时对象
10 友元通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限;如果想在类外访问类的私有成员变量,可以有两种方法: 1.使用int getn()const { return n; } //n是成员变量 2.使用友元函数11 临时对象 如果对象变量只用到一次,就直接用匿名对象,编译器可以对匿名对象进行优化,减少对象的创建,提高效率。
2014-03-01 20:27:58 431
原创 [C++_4]static_const_mutable
7 静态成员变量,函数静态成员不属于某个对象,只是属于一个类,也不能被this调用;适用于:变量,方法被某一类通用,而不是单个对象。例如静态变量作类实例计数器,工具类 8 类方法constconst void print(bool newline=true); //返回值是只读的 void print(bool newline=true)const; //常
2014-03-01 10:22:38 427
原创 [C++_3]构造函数&析构函数&this
6 构造函数构造函数作用:分配空间,初始化变量。实例的对象在初始化时只保证实参传递到构造函数里面,不保证传到成员变量里,所以在构造函数里要手动把实参赋值给成员变量 ;构造函数可以重载;自动调用;可以有默认值,如果没有系统可以自动给构造一个,但是不提供复制操作; 只执行一次;一般来初始化成员;只要自己定义了构造函数,编译器不再产生构造函数。注意:构造无参对象时不要使用Class name()
2014-02-28 15:51:02 714 2
原创 [C++_2]结构及函数指针&重载&内联
2 结构指针(意义?)通过成员指针(相对地址)访问结构成员:结构变量.*成员指针 结构指针->*成员指针#include#includeenum gender{F,M};using namespace std;struct Person{ string name; int age; gender g; void printmem(){cout << "Name:"
2014-02-28 08:25:41 521
原创 [C++_1]C与C++区别
操作环境:Ubuntu 13.10 编辑环境:vim/kate 编译器:g++1 C++与C的区别1.1 编译器及头文件等1可以选用个g++编译器2源文件扩展名可以是 .cpp .C .cxx .cc3不再使用C中的头文件,将xxx.h替换为cxxx,取消.h后缀; C++头文件所在位置: /usr/include/C++/4.1.1/4 C++风格输出使用cin/
2014-02-28 08:14:35 815
原创 [C_9] IO & 标准库
15 IO15.1 字符IOgetchar/putchar //从屏幕 输入输出一个字符fgetc/fputc getc/putc(有的编译器可能是宏) //从文件输出输入getchar();//会让程序暂时等待从效率上看,专用的(输入输出函数)比通用的(输入输出函数)快ungetc退回一个字符feof(FILE*) //检查是否超越了文件末尾,一般不用
2014-02-27 22:13:36 650
原创 [C_8] typedef & 内存分配
13 typedef13.1 函数指针重命名int (*x (void(*p)( ) )) (char);//返回类型int(*)(char) 函数名 x 形参 void(*p)()变量x定义为一个函数替换: typedef void (*T)(); //定义T为指向void func()函数的指针typedef int (*U)(char); //定义U为指向in
2014-02-27 22:05:19 1010
原创 [C_7]指针
12 指针12.1void*指针 void指针可以接受任意类型的指针变量12.2 类型确定右左法则:第一次开始阅读声明的时候,必须从变量开始,而不是从最内部的括号 开始,向右看,碰到一个括号(只是说括号,中括号不算)就调转阅读的方向,括号 内的分析完时就跳出括号,这样继续,直到整个声明被分析完。12.3指向数组的指针 int* p[5]; int(*p)[5]
2014-02-27 21:54:39 397
原创 [C_6]修饰符&宏_头文件
10修饰符10.1static全局变量:加static修饰的全局变量,只能在本文件中使用。局部变量:加static修饰的局部变量,超出作用域不会被释放,直到结束10.2 extern告诉编译器,变量已在其他文件中声明过了,对于static变量无效。10.3 register请求编译器把变量放到寄存器里,可能不成功 ,用在循环里可以提高效率 10.4 volatitl
2014-02-27 21:35:09 628
原创 [C_5]内存补/对齐&函数
8内存对齐&补齐(了解) 变量的地址是变量本身所占字节数的倍数。分配空间到内存地址的边界上。对齐可以提高访问速度。 char 1 地址是1的倍数 int 4 地址是4的倍数 typedef struct Goods { char name[18]; //18 double price //8 char special
2014-02-27 21:23:53 503
原创 [C_4]数组&字符串
6 数组6.1数组初始化int a[100] ={ [19]=20,[10]=100,[58]=15}C99中的变长数组:int n;scanf(“%d”, &n);int a[n];// -std =C996.2 数组与地址若有int a[20];则存在的等价关系为:a&a&a[i
2014-02-27 21:13:47 502
原创 [C_3]位运算&控制结构&枚举
4 位运算应用&测试某个二进制位的某位是1还是0|测试某位是1还是0^交换两个数~左移n位相当于乘2^n>>右移b位相当于除2^n注意:左移或者右移不能超其二进制数的总位数
2014-02-27 20:40:58 915
原创 [C_2]格式化输入输出
3 格式化输入输出3.1 printf()函数:格式控制 % - 0 m.n l或者h1 %转换开始位置(占位符)2 – 左对齐,默认右对齐3 0 表示空位填0(也可以是其他字符),省略表示不填零4 m.n m表示输出总共占多少字符,n表示精度,小数点后几位默认n = 65 l或者 h l整数 – long 浮点数 – double h整数 – short6 格式字
2014-02-27 19:55:43 907
原创 [C_1]编译 _基本类型
操作环境:Ubuntu13.10编辑环境:vim编译器:gcc1 gcc编译命令GCC基本用法 :gcc [option] [filenames]option可选为:-c 只编译不链接,生成.o文件,常用编译不包含主程序的子程序文件-o output_filename 确定输出名称为output_filename,默认为a.out-g 符号调试工具-O 优化
2014-02-27 19:18:52 708
原创 Unix/Linux -shell&vim
1 操作系统操作系统分为系统内核(kenel)和外壳(shell),其中内核是操作系统的核心部分,它由操作系统中管理存储器,文件,外设和系统资源的那部分组成。内核通常运行进程并提供进程间通信(ipc)的机制。2 shell 它是接收用户命令,然后调用相应的应用程序的“提供使用界面”的软件(命令解析器)。作为命令语言,它交互式解释和执行用户输入的命令或者自动的解释和执行预先设定好的一
2014-02-27 17:40:42 676
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人