10 2013 档案

面向对象 继承与派生
摘要:一、概述:类和类最重要的两种关系:组合关系(is part of);泛化关系(is kind of,启发代码重用)。泛化关系表示事物在垂直方向上的一种分类,从一个抽象类型细分出多个具体类型,并且可以继续细分下去,最终形成泛化树。泛化树中的上层结点称为父类(基类),父类的下层结点称为子类(派生类)。父类派生出子类,子类继承了父类。// A 类派生与 B 类、可用公有继承、保护继承、私有继承等,可单一继承、多重继承。多重继承的基类列表中包含多个基类,用逗号隔开。//不管何种继承,派生类占据的内存都大于父类,包括那些父类私有的都会被派生出来浪费空间,所以要慎用派生继承。class A : publi 阅读全文

posted @ 2013-10-30 15:05 Lingc· 阅读(245) 评论(0) 推荐(0)

GetAdaptersInfo获取网卡配置和Ip地址信息
摘要:一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址;如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种;因此,如果要获得本机所有网卡的IP和MAC地址信息,则必须顺序获得每个网卡,再依次获取其信息等;在windows sdk中,用IP_ADAPTER_INFO结构体存储网卡信息,包括网卡名、网卡描述、网卡MAC地址、网卡IP等,该结构体的主要描述如下所示:typedef struct _IP_ADAPTER_INFO { struct _IP_ADAPTER_INFO* Next;//指向链表中下一个适配器信息的指针 DWORD C.. 阅读全文

posted @ 2013-10-28 13:25 Lingc· 阅读(824) 评论(0) 推荐(0)

mfc afxbeginthread()
摘要:在进行多线程程序设计的时候,我们经常用到AfxBeginThread函数来启动一条线程该函数使用起来非常的简单方便,其定义如下CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,//线程函数地址 LPVOID pParam,//线程参数 int nPriority = THREAD_PRIORITY_NORMAL,//线程优先级 UINT nStackSize = 0,//线程堆栈大小,默认为1M DWORD dwCreateFlags = 0,// LPSECURITY_ATTRIBUTES lpSecurityAttrs = N 阅读全文

posted @ 2013-10-21 19:23 Lingc· 阅读(723) 评论(0) 推荐(0)

vc ini配置文件读写
摘要:ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。一、向ini文件中写入信息的函数1. 把信息写入系统的win.ini文件BOOL WriteProfileString( LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串 LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字... 阅读全文

posted @ 2013-10-21 17:31 Lingc· 阅读(508) 评论(0) 推荐(0)

SetTimer()函数使用
摘要:在编程时,会经常使用到定时器。使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。1.1用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMER... 阅读全文

posted @ 2013-10-21 17:15 Lingc· 阅读(38533) 评论(0) 推荐(1)

SendMessage 和 PostMessage
摘要:1、首先是返回值意义的区别,我们先看一下MSDN里的声明:LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 其中4个参数的意义是一样的,返回值类型不同(其实从数据上看他们一样是一个32位的数,只是意义不一样),LRESULT表示的是消息被处理后的返回值... 阅读全文

posted @ 2013-10-21 10:36 Lingc· 阅读(320) 评论(0) 推荐(0)

线程同步CriticalSection
摘要:孙鑫 第十五/十六课之四 线程同步CriticalSection说明在使用多线程时,一般很少有多个线程完全独立的工作。往往是多个线程同时操作一个全局变量来获取程序的运行结果。多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果是写操作,则会发生错误。这时候,我们可以通过临界区,为全局变量设置一个保护,保证同时只有一个线程可以访问此变量,其他变量进入等待状态。临界区(Critical Section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一 阅读全文

posted @ 2013-10-21 10:20 Lingc· 阅读(301) 评论(0) 推荐(0)

c++基础学习之函数与参数
摘要:1.传值参数//传值参数int Abc(int a,int b,int c){ return a+b+b*c+(a+b-c)/(a+b)+4;}a,b和c是函数Abc 的形式参数formal parameter,类型均为整型。如果在如下语句中调用函数A b c:z = Abc(2,x,y)那么,2,x 和y 分别是对应于a,b 和c 的实际参数(actual parameter)。当A bc ( 2 ,x ,y) 被执行时,a 被赋值为2;b 被赋值为x;c 被赋值为y。如果x 和 / 或y 不是int 类型,那么在把它们的值赋给b 和c 之前,将首先对它们进行类型转换。在上面程序中,形... 阅读全文

posted @ 2013-10-20 18:40 Lingc· 阅读(290) 评论(0) 推荐(0)

c++基础学习之string
摘要://学习使用string类 2013-10-18 lingc#include #include //include this head file using namespace std;int main(){ string myString1; myString1 = "hello world,i am lingc!";// can no use the ' ' string myString2(myString1,5,12);// begin at index 5, and count 12 elements string myString3(4,' 阅读全文

posted @ 2013-10-18 16:57 Lingc· 阅读(249) 评论(0) 推荐(0)

转 select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
摘要:select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);所在的头文件为:#include 和#include 先对函数中的参数做一个简单的介绍。参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。struct timeval结. 阅读全文

posted @ 2013-10-14 17:54 Lingc· 阅读(314) 评论(0) 推荐(0)

递归法求阶乘
摘要:#include using namespace std;// 递归法求阶乘int funcfactorial(int a){ if (a> a; cout << funcfactorial(a)<<endl; return 0;} 阅读全文

posted @ 2013-10-12 20:14 Lingc· 阅读(237) 评论(0) 推荐(0)

利用引用访问私有数据成员
摘要:#includeusing namespace std;//引用访问私有数据成员class Test{private: int x,y;public: void setxy(int a ,int b) { x = a; y = b; } void getxy(int &px,int &py) { px = x;//相当于 &px = a; px就是a了! py = y; } void printxy() { cout << x <<endl; cout << y <<endl; }};int main(){ Test p; 阅读全文

posted @ 2013-10-12 17:30 Lingc· 阅读(406) 评论(0) 推荐(0)

直接插入排序
摘要:插入排序多采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置中重复步骤2~5#include using namespace std;// 直接插入排序算法int main(){ int A[10]={8,2,1,5,4,3,6,9,10,7}; int key,j; for(int i=1;iA[i]) { key = A[i]; for (j =i-1; j>0.. 阅读全文

posted @ 2013-10-11 16:07 Lingc· 阅读(165) 评论(0) 推荐(0)

导航

不知道不知道 知道不知道 知道知道 不知道知道。
天道酬勤,同志们共同努力!