C++基础
Howard_Liu1314
这个作者很懒,什么都没留下…
展开
-
l2tp的相关资料
VPN转载 2016-06-29 16:10:53 · 1091 阅读 · 0 评论 -
explicit关键字
explicit关键字C++提供关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换发生.声明为explicit的构造函数不能在隐式转换中使用.C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色.1.是个构造器,2.是个默认且隐含的类型转换操作符.写下如AAA = XXX,这样的代码,且恰好XXX的转载 2013-07-22 15:51:03 · 540 阅读 · 0 评论 -
服务管理
服务函数下面的函数用于被服务执行或者使用函数 描述Handler An application-defined callback function used with the RegisterServiceCtrlHandler function.HandlerEx RegisterServiceCtrlHandle转载 2013-05-14 22:40:39 · 1247 阅读 · 0 评论 -
《Windows核心编程》 CloseHandle()
在《Windows核心编程》中看到一个线程内核对象的初始引用计数是2不是1,在CloseHandle()后,计数会减1,线程运行完成后,会再减1.如果是下面这样的情况:C/C++ code?1234567891011121314151617181920212223原创 2013-05-14 14:20:27 · 1122 阅读 · 0 评论 -
UNICODE,GBK,UTF-8区别
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如转载 2013-05-13 22:11:14 · 675 阅读 · 0 评论 -
CAutoCriticalSection 互斥量对象编程
///////////////////////////////////////////////////////////// Class CAutoCriticalSection///////////////////////////////////////////////////////////CAutoCriticalSection::CAutoCriticalSection(LPCR原创 2013-05-13 21:01:20 · 1382 阅读 · 0 评论 -
C语言的变参技术,va_start,va_arg,va_end这几个函数怎么用?
一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地址生长的,控制生长的就是堆栈指针了,最先压入的参数是在最上面,就是说在所有参数的最后面,最后压入的参数在转载 2013-04-08 22:59:22 · 762 阅读 · 0 评论 -
指针函数与函数指针的区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变转载 2013-04-07 23:15:58 · 420 阅读 · 0 评论 -
VS2005下使用CPPUNIT进行单元测试(全过程)
一、单元测试与CPPUNIT简介 几乎每个开发人员都写过测试代码,但是往往这些代码不系统,也没有良好的管理,同时在测试代码编写过程中也有很多重复的劳动,比较繁琐。在一个软件开发过程中,往往会进行很多修改,迭代开发的模型随处可见,如何验证程序的功能、性能和结构是否符合要求是一项重要的工作。 单元测试是属于白盒测试和结构性测试,一般由开发人员开展,当然如果有好的测试工具支持,测试人员甚至最转载 2013-03-19 21:37:18 · 1206 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而转载 2013-03-17 21:24:31 · 444 阅读 · 0 评论 -
strcpy() 与 ‘\0’
strcpy() 拷贝字符串,它直到发现'\0'字符串结束符才结束,所以,有时候使用它会出现错误void main(){ char str[10],str0[10]; for(int i=0;i str[i] = 'd'; strcpy(str0,str); return 0} // 程序结束会出现 run-time check fa转载 2013-03-14 20:09:12 · 1247 阅读 · 0 评论 -
STL 在 C++ 中的应用
这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的容器(container)、模板(template)、游标(Iterator)、算法(Algorithms)、分配转载 2013-03-10 23:41:39 · 537 阅读 · 0 评论 -
几种进程间的通信方式
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共原创 2013-03-07 23:33:00 · 451 阅读 · 0 评论 -
windows下的boost库
理论上,本文适用于boost的各个版本,尤其是最新版本1.48.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,V2012,gcc,arm-linux-gcc,C++ Builder等。先总结一下Windows系统。一、下载首先从boost官方主页http://www.boost.org/下载最新版boost安装包。(或转载 2013-07-16 13:33:02 · 1328 阅读 · 0 评论 -
内联函数能否声明为虚函数
上C++课的时候记得老师说虚函数的限制有以下四点:(1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数;(2)虚函数必须是非静态成员函数,因为静态成员函数不受限与某个对象;(3)内联函数不能声明为虚函数,因为内联函数不能再运行中动态确定其位置;(4)构造函数不能声明为虚函数,多态是指不同对象对同一消息有不同的行为特征,虚函数作为运行转载 2013-08-30 13:55:34 · 1459 阅读 · 0 评论 -
strtok和strtok_r
strtok和strtok_r原型:char *strtok(char *s, char *delim);功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。返回值:转载 2013-08-30 13:52:45 · 533 阅读 · 0 评论 -
C++ Bridge 设计模式
C++ Bridge 设计模式 Bridge模式是应用最广泛也是我个人比较喜欢的一个C++设计模式之一。Bridge模式意图:降低抽象和实现之间的耦合。面向对象系统设计和分析中最重要的一点就是:高内聚,低耦合。Bridge模式使得抽象和实现能够相对独立。 Bridge模式结构图:转载 2015-05-25 18:06:23 · 680 阅读 · 0 评论 -
链表逆序
设链表节点为[cpp] view plaincopytypedef struct tagListNode{ int data; struct tagListNode* next; }ListNode, *List; 要求将一带链表头List head的单向链表逆序。分析:转载 2014-03-10 22:12:50 · 554 阅读 · 0 评论 -
float 类型精度和两数比较大小
Windows VS2008 下,float型精度是7位小数. 在精度范围内,可以直接用 , == 逻辑判断两个float类型数据的大小. 在精度范围之外,多余数位将被忽略,从而分不同情况 : 以下是小数位为9,8,7的验证.结果证明 7位为有效小数位数,>7位的都忽略.若多余位之前的有效位数字相等 , 则判断为两数相等 , 既多余位已经不起作用; 若多余位之前的有效位数字不等, 则依转载 2013-03-14 20:34:44 · 2624 阅读 · 0 评论 -
Http下载的另一种实现方式,使用QNetworkAccessManager
QNetworkRequest request(serviceUrl);request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");networkManager->post(request, postData.encodedQuery());//HTTP Post转载 2014-02-11 13:33:13 · 4562 阅读 · 0 评论 -
C++中const的实现机制深入分析
问题 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明。那么const究竟是如何实现的呢? 对于声明为const转载 2014-02-10 22:24:05 · 596 阅读 · 0 评论 -
QT国际化, 运行时改变界面语言, 利用QT实现国际化应用程序
Qt在应用程序的国际化方面做了很多工作,Qt可以实现在运行时动态改变应用程序的界面语言,下面以一个简单的例子一步一步教你如何实现之.Qt是跨平台的开发环境,这里以MAC上的QTSDK4.6.2为例,您可以在其它平台下按此操作步骤一样没问题.好的,让我们开始吧:首先我们创建一个Qt4Gui Application去掉那个讨厌的ToolBar,加入如下控件:QCom转载 2014-02-11 13:49:07 · 1732 阅读 · 0 评论 -
指针作为函数的参数传递的问题
今天编程时遇到了一个问题,就是想写一个函数,让这个函数通过参数返回内存某一个缓冲区的首地址。在网上找了找,发现以下这段代码比较有代表性,于是复制过来作为一个总结说明。下面这段代码是正确的,这段代码通过函数申请一片内存区,并将申请到的内存首地址返回给调用函数:void getptr(int **p,int num){ *p=(int *)maccol(num*sizeof(int转载 2014-02-09 16:53:03 · 686 阅读 · 0 评论 -
进程间的几种通讯方式Code
事件通信:事件通信主要是发送信号,作为事件通知使用,占用资源少,速度快 发送端:[cpp] view plaincopyprint?hEvent = ::CreateEvent(NULL,TRUE,FALSE,_T("MYMESSAGE")); if ((hEvent == INVALID_HANDLE_VALUE) || (hEvent == 0)) {转载 2013-11-07 10:06:54 · 660 阅读 · 0 评论 -
map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
vectoriteratorstringobjectlambdareferencehttp://www.cnblogs.com/my_life/articles/2018852.html 序列性容器::(vector) erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被 删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方式,但是e转载 2013-11-06 13:10:18 · 861 阅读 · 0 评论 -
高精度整数加法(大整数加法)
如果我们需要很大范围的十进制整数加法,对于4字节int型,不能表示该数据,此时需要用字符串保存操作数和结果,采取逐位运算的方式。如: 987654321 + 1234567989 = 1111111110 -1234 + (-4567) = -5801 -1234 + 30 = -1204 0 + 0 = 0 0 + 34 = 34. 实现函数void add(转载 2013-10-31 12:07:36 · 847 阅读 · 0 评论 -
面试积累
1.请先看以下程序:Q:若 int a[5];则 &a+1 的含义是甚么?A:&a+1 不是表示a的地址(设为Ox0010)加1,变为0x0011. 由于a为包括5个int类型的数组,则"&a+1"中的"+1"表示为相当于"1"个a大小的空间(或成为偏移),此时&a+1 表示 a[5].Q: 若 int* ptr = (int*) (&a+1);则 ptr转载 2013-10-17 17:22:31 · 528 阅读 · 0 评论 -
快速排序算法原理与实现
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它转载 2012-10-13 13:45:20 · 412 阅读 · 0 评论 -
VC使用CRT调试功能来检测内存泄漏
C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的转载 2013-08-30 17:43:07 · 500 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(17)通过pipe进程间通信
http://tech.ddvip.com/2012-12/1355150688186856.html管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。 管道分为匿名管道和命名管道。 匿名管道只能在父子进程间进行原创 2013-03-07 23:32:02 · 752 阅读 · 0 评论 -
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2013-01-04 22:23:20 · 312 阅读 · 0 评论 -
C++ const_cast static_cast dynamic_cast reinterpret_cast运算符
(1)const_cast运算符:该运算符的用法为:const_cast(expression)将expression表达式的只读性去掉,转换成type_id类型。其中的type_id只能为指针或者引用才有转换的意义。因为只有用指针或者引用,让转换后的变量指向同一个地址才可以达到目的。C++推荐是使用C++中转换方式,const_cast只是将变量的const属性去转载 2013-01-04 22:11:36 · 562 阅读 · 0 评论 -
MFC 进行CSV文件的读写
Csv.h #pragma once#include "afx.h"class CCSVFile : public CStdioFile{public: enum Mode { modeRead, modeWrite }; CCSVFile(LPCTSTR lpszFilename, Mode mode = modeRead); ~CCSVFile(void);原创 2012-06-25 00:30:28 · 15992 阅读 · 2 评论 -
Unicode下CString与整型之间的转换
MFC中对字符串的定义大多是使用CString类,不可避免的有时候需要将CString类型的字符串转换为整形或者其他类型的变量。最近在做的一个项目中就遇到了这样的问题。用CString定义了一个由数字组成的字符串str,但是需要将其转换为BYTE型使用。很容易就想到了atoi函数,atoi函数主要功能是将一个字符串转化为整型数,函数原型如下:[code]int atoi(const cha原创 2012-06-23 15:50:21 · 2032 阅读 · 0 评论 -
VC ToolKit 一些控件知识
1.让List Control有Check Box用SetExtendedStyle方法可以设置,看代码:(CListCtrl m_ListCtrl;)DWORD dwStyle = m_ListCtrl.GetStyle();dwStyle |= LVS_EX_CHECKBOXES;m_ListCtrl.SetExtendedStyle(dwStyle);2.让List原创 2012-06-23 14:50:36 · 579 阅读 · 0 评论 -
MFC CStdioFile简单用法
转自:http://hi.baidu.com/mysolarstar/blog/item/8d1898012df3b2cd277fb5fc.htmlVC++ MFC 使用CStdioFile类来操作文件,是个很简单的例子,有源代码下载。 源代码: //----- 使用 CStdioFile 类来读取文件 ---- www.5has.com 制作代码 简单例子转载 2012-06-23 14:19:43 · 1449 阅读 · 0 评论 -
【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP 与P是等效的。P表示这是一个指针。 T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UN原创 2012-06-23 15:56:07 · 1715 阅读 · 0 评论 -
VC++之数据库连接Access
以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍。Windows平台的数据接口标准有ODBC、OLE DB、ADO和Borland的BDE接口,ODBC(Open DataBase Connectivity)只能用于访问关系型数据库,为了访问非关系型数据微软设计了OLE DB接口并在此基础上推出了ADO(ActiveX Data Objects)。转载 2012-06-23 14:59:57 · 636 阅读 · 0 评论 -
wireShark 的使用 网络抓包
转自:http://www.cnblogs.com/maisui1002/archive/2010/05/31/1748356.html工作后首次接触网络知识,从抓包工具Wireshark开始。 Wireshark是网络包分析工具。主要作用是尝试捕获网络包,并显示包的尽可能详细的情况。Wireshark是开源网络分析软件。 Wireshark在w转载 2012-06-23 14:22:13 · 1118 阅读 · 0 评论 -
MFC CListCtrl 的使用
////获取表格控件指针、设置样式CListCtrl* lst = (CListCtrl*)GetDlgItem(IDC_LSTCTl);lst->ModifyStyle( 0, LVS_REPORT ); // 报表模式 lst->SetExtendedStyle(lst->GetExtendedStyle()| LVS_EX_GRIDLINE转载 2012-06-23 14:18:26 · 853 阅读 · 0 评论