C++技术
beiguoyouzi
这个作者很懒,什么都没留下…
展开
-
头文件重复引用
#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:#include "x.h"#include "x.h"显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。但是下面的代码:#include "a.h"#include "b.h"看上去没什么问题。如果a.h和b.h都包含了一个头文件x.h。那么x.h在此也同样被包含了两次,只不过它的形式转载 2009-05-20 17:36:00 · 5261 阅读 · 4 评论 -
Activex、OLE、COM、OCX、DLL之间有什么区别?
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的转载 2009-05-22 10:04:00 · 198 阅读 · 0 评论 -
线程基础知识
1. 进程与线程有那些区别和联系? 每个进程至少需要一个线程。 进程由两部分构成:进程内核对象,地址空间。线程也由两部分组成:线程内核对象,操作系统用它来对线程实施管理。线程堆栈,用于维护线程在执行代码时需要的所有函数参数和局部变量。 进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。转载 2009-06-04 14:41:00 · 172 阅读 · 0 评论 -
#pragma once 与 #ifndef 解析
为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 声明、定义语句 #endif转载 2009-06-07 14:18:00 · 180 阅读 · 0 评论 -
小鸡射手的专栏。
RT。原创 2009-06-08 13:48:00 · 164 阅读 · 0 评论 -
GPRS开发系列文章之实战篇
一、前言在前篇《GPRS开发系列文章之进阶篇》里,我主要详细讲解了客户端进行GPRS连接的常用API,并对GPRSdemo测试程序中的连接类ConnManager中的一些重要函数做了说明,最后稍微提及了下服务器端要用到的一些类库。今天,在这篇实战篇中,我将在理解前两篇的基础上,结合客户端与服务器端,向大家介绍这篇GPRS开发之实战篇,向大家演示如何利用GPRS开发一个客户端与服务器端互相通信的转载 2009-06-12 11:28:00 · 201 阅读 · 0 评论 -
GPRS开发系列文章之入门篇
要做GPRS方面的应用软件开发,除了必备的一些程序设计知识之外,对计算机网络通信这些专业术语的了解可是一个都不能少,本人并不是专职于移动开发,所以在搞开发时也遇到了很多困难。出于这种考虑,我也想写个GPRS开发系列入门文章,服务于各位还正在搜索资料的同仁们(开发者抑或PDA爱好者等都行),同时欢迎各位移动开发的高手指点,共同提高。接下来的文章依次为:<a title="GPRS开发系列文章转载 2009-06-12 11:25:00 · 314 阅读 · 0 评论 -
C#转char
CStringToChar( CString& str ){int len = str.GetLength(); m_pChar = new char[len * 2]; memset(m_pChar, 0, len*2); WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, str, len, m_pChar, len*2, NULL, NU原创 2009-06-12 10:53:00 · 265 阅读 · 0 评论 -
GPRS开发系列文章之进阶篇
一、前言在前篇《GPRS开发系列文章之入门篇》里,我主要对GPRS开发中遇到的一些常用概念和一些业务逻辑做了简单的介绍,没想到得到了很多网友的支持和关注,因昨天有事因此延迟到今天才奉上这篇进阶系列文章,还请各位见谅。希望大家支持同时欢迎拍砖,共同提高。在最后一篇《GPRS开发系列文章之实战篇》我将详细叙述如何利用类库开发Client和Server端通信程序,因此本文的多数讲解将是为下文服务转载 2009-06-12 11:29:00 · 207 阅读 · 0 评论 -
windows下捕获数据包
经常看到论坛有人问起关于数据包的截获、分析等问题,幸好本人也对此略有所知,也写过很多的sniffer,所以就想写一系列的文章来详细深入的探讨关于数据包的知识。 我希望通过这一系列的文章,能使得关于数据包的知识得以普及,所以这系列的每一篇文章我都会有由浅入深的解释、详细的分析、以及编码步骤,另外附上带有详细注释的源码(为了照顾大多数朋友,我提供的都是MFC的源码)。 不过由于也是初学者,疏漏之处还望转载 2009-06-15 16:12:00 · 265 阅读 · 0 评论 -
#define多行注意事项。
先看一个例子 #define QF_INT_LOCK(_KEY) do{/(_KEY)=get_int_status(); / int_lock(); / }while(0) 在写多行的代码define时 ,最好在外层加上do{}whi转载 2009-07-09 16:23:00 · 980 阅读 · 0 评论 -
标准c++中主要有四种强制转换类型运算符.
标准c++中主要有四种强制转换类型运算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast(a) 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。 表达式static_cast(a), a的值转换为转载 2009-07-09 14:01:00 · 200 阅读 · 0 评论 -
不使用变量交换a,b的值。
第一种方法:void main(){ int a=9; int b=10; a=a+b; b=a-b; a=a-b; cout cout}第二种方法:void wap(int a,int b,int *pa,int *pb);void main(){ int a=9; int b=10; wap(a,b,&a,&b); //注意这里是传的形参,所以在wap()函数会产转载 2009-07-09 14:36:00 · 235 阅读 · 0 评论 -
Effective STL 中文版(完整版)
http://stl.winterxy.com/html/000030.html转载 2009-05-23 18:01:00 · 213 阅读 · 0 评论 -
微软vs2008快捷键
编辑:CTRL + M, O:折叠当前源代码文件中的所有大纲CTRL + M, L:将当前源代码的大纲在折叠与展开间切换CTRL + M, M:将当前选中的源代码在折叠与展开间切换CTRL + M, P:将当前源代码文档中的所有大纲信息清除CTRL + K, C or CTRL + E, C:注释掉所有选中的源代码部分CTRL + K, U or CTRL + E, U:取消掉所有选中的源代码部分转载 2009-05-22 18:04:00 · 237 阅读 · 0 评论 -
追MM与23种设计模式。
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户原创 2009-04-22 14:32:00 · 138 阅读 · 0 评论 -
Java新时代即将到来。
在程序员眼里,Java+Oracle, PHP+MySQL, .NET + SQL Server 都是最佳的组合,它们定位也是很清楚的。在数据库领域Windows + SQL Server, Linux + MySQL, AIX + DB2, Solaris + Oracle 这个数据库和操作系统的组合也是最常见的。而Oracle同样是java的坚定支持者,其Oracle数据转载 2009-04-21 16:20:00 · 133 阅读 · 0 评论 -
结构体和类中使用等号。
#include using namespace std;struct Test { int a; char b;};void main(){ Test X,Y; X.a=2; X.b=k; Y=X; cout cout cout} 如果是类的话,则需重载运算符。原创 2009-04-24 14:43:00 · 296 阅读 · 0 评论 -
涉及到转义字符的字符不能赋值。
#include #include using namespace std;void main(){ char cPath[15]="/kanglei/hello"; char temp[15]; for (int i=0;i { temp[i]=cPath[i]; }}输出:kangleihello////////////////////////////////////原创 2009-04-29 10:24:00 · 204 阅读 · 0 评论 -
类里的函数不需要实现。
.h文件里class Test{public: Test(); ~Test(); void print(int a);protected: int a; char b;private:};.cpp文件里#include "testclassimplement.h" Test::Test() { a=10; b=b; } Test::~Test() { }构造函数和析构原创 2009-05-05 15:41:00 · 179 阅读 · 0 评论 -
关于%
c#中可以对double型进行%操作,在c++中不行。原创 2009-05-08 15:36:00 · 144 阅读 · 0 评论 -
HTTP协议详解。
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTT转载 2009-05-13 13:35:00 · 139 阅读 · 0 评论 -
register变量
Register修饰符暗示编译程序相应的变量将将被频繁使用,如果可能的话,应将其保存在CPU的寄存器中,以指加快其存取速度。但是,使用register修饰符有几点限制。 首先,register变量必须是能被CPU寄存器所接受的类型,这通常意味着register变量必须是一个单个的值,并且其长度应小於或等於整型的长度。但是,有些机器的寄存器也能存放浮点数。 其次,因为register原创 2009-05-18 10:45:00 · 247 阅读 · 0 评论 -
setsockopt()函数用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WA转载 2009-05-19 11:32:00 · 4704 阅读 · 4 评论 -
getsockopt()/setsockopt()函数的使用收藏
正在做tcp协议的程序,由于发送的数据较大,所以的设置tcp套接口缓冲区的大小,否则接收到的数据只是发送的一部分。我要做的是发送采集到的图像数据,不设置缓冲去的大小,每次接受到的图像总有一部分是黑色的或者整个图像都是黑色的。 关于getsockopt()/setsockopt()函数的参数格式,相关的介绍很多,我只写设置缓冲区的形式:SO_RCVBUF和SO_SNDBUF每个套接口都有一个转载 2009-05-19 11:31:00 · 420 阅读 · 0 评论 -
const用法详解
面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法 2. 必须初始化 const int i=5;转载 2009-05-20 14:08:00 · 313 阅读 · 0 评论 -
STL 中的Vector 、Deque、 List
vector deque 以及list 都是动态增长的,在这三者之中选择的准则主要是关注插入特性以及对元素的后续访问要求vector 表示一段连续的内存区域每个元素被顺序存储在这段内存中。对vector 的随机访问效率很高 。但是在任意位置而不是在vector 末尾插人元素则效率很低,因为它需要把待插入元素右边的每个元素都拷贝一遍。类似地删除任意一个而不是vector的最后一个元素效率同转载 2009-05-21 10:13:00 · 700 阅读 · 0 评论 -
windows进程中的内存结构
触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?下面就会对此进行深入的讨论。下文中的C语言代码如没有特别声明,默认都使用VC编译的release版。 首先,来了解一下 C 语言的变量是如何在内存分部的。C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄存器变量(Regeiste转载 2009-10-09 21:30:00 · 204 阅读 · 0 评论