C++
文章平均质量分 63
普通网友
这个作者很懒,什么都没留下…
展开
-
多态 虚函数
#includeusing namespace std;class A{public: virtual void print() { cout<<"A"<<endl; }private: int value;};原创 2011-07-26 12:33:55 · 575 阅读 · 0 评论 -
Linux系统下C++开发工具
转载:http://www.bitscn.com/os/linuxbc/200904/158755.html概述 就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs转载 2011-08-02 13:28:25 · 668 阅读 · 0 评论 -
类成员函数创建线程
参考:http://blog.csdn.net/braveyly/article/details/3446472对于”在类里面的成员函数创建线程怎么搞“都有两三个月的疑问了,一直没想到什么好的方法。对于创建线程的调用函数归属问题不太清楚,也没什么时间做个实验。下面的实原创 2011-08-13 11:42:32 · 2409 阅读 · 0 评论 -
linux下用gcc进行程序的编译,链接(多功能)
转载:http://blog.sina.com.cn/s/blog_494e45fe0100infx.html#gcc hello.c该命令将hello.c直接生成最终二进制可执行程序a.out这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成原创 2011-08-01 16:26:08 · 841 阅读 · 0 评论 -
C、C++和linux常见头文件
C/C++头文件一览 C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include float.h> //浮点数处理#include //文件输入/输出#i转载 2011-08-05 16:25:35 · 1003 阅读 · 0 评论 -
VC++中内存泄露检测
转载:http://topic.csdn.net/u/20091015/01/b68517c2-5b02-414f-ba12-bf221ad8e518.htmlCRT中内存泄漏检测的宏有几个初学者写有大量动态内存分配不泄露的?又有几个老鸟敢嚣张的自称写那种多次分配多个函数转载 2011-08-08 16:11:25 · 547 阅读 · 0 评论 -
堆排序
思想:利用二叉大根堆堆顶元素为最大值,把最大值取出后的元素再构建二叉大根堆,取次大值的方法,从而得到有序排列!下面代码可直接运行:#include #include inline void swap(int & a, int & b){ int c=a原创 2011-09-11 16:27:54 · 549 阅读 · 0 评论 -
关于string的说明
1. 在C里面是没有string这个类型的,只有char类型;2. C里面的string.h里面包含一些常用的char *类型的字符串处理操作,如strcmp函数;3. 在C++中,是包装了std 的C++头文件,对应的是新的string 类;在C++中包含strin原创 2011-09-12 17:10:34 · 466 阅读 · 0 评论 -
内存重叠问题,memcpy,memmov,strcpy
转载自:http://hi.baidu.com/zhusw1023/blog/item/6be1768eb92e95ea503d92d3.html一直熟悉的strcpy以及memcpy等内存拷贝函数。到今天才知道一个新的名词“内存重叠”。所谓内存重叠个人理解就是拷贝的目的地址转载 2011-09-11 21:11:46 · 2746 阅读 · 2 评论 -
归并排序
#include #include #include void merge(int * array, int start, int middle, int end){ int nIter=0; int nIter1=start; //a[start原创 2011-09-11 10:09:26 · 516 阅读 · 0 评论 -
在C语言中static的作用
转载自: http://www.cnblogs.com/dc10101/archive/2007/08/22/865556.html作者写的明白、易懂,不忍不摘!在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最转载 2011-09-13 08:03:34 · 590 阅读 · 0 评论 -
socket编程,从控制台转到MFC下碰到的几个问题
在使用VC6.0做东西时,产生几个典型的错误,特列如下,以备后查。错误1:fatal error C1010:unexpected end of file while looking for precompiled header问题很奇怪,在控制台项目下编译时,完全正确,原创 2011-08-17 13:24:30 · 981 阅读 · 0 评论 -
关于 winsock2.h(2310) : error C2375: redefinition; different linkage
出现情形:同样是控制台项目文件添加到MFC项目中出现的问题。由于项目中会涉及到socket编程,所以在创建MFC可执行文件时,选中了“Windows Socket的支持选项”。因此,VC6.0 会自动在stdafx.h 中增加:#include // MFC so原创 2011-08-17 15:21:41 · 129 阅读 · 0 评论 -
运算符的优先级
最近找工作笔试中碰到很多基本的知识,时间长了也确实记不住,再复习下。运算符种类1.算术运算符:* - + / 2.关系运算符: > = 3.逻辑运算符:! && || 4.位运算符:> ~ | ^ & 5.赋值运算符:=及扩展赋值运算符 6原创 2011-09-15 19:25:02 · 536 阅读 · 0 评论 -
关于宏的一些说明
宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。1.不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏”。 格式:#define 标识符 字符串其中的标识符就是所谓的符号常量,也称为“宏名”。 预处理(预原创 2011-09-15 20:39:58 · 633 阅读 · 0 评论 -
VC下新建工程时未添加winsock的补救措施
1. 在stdafx.h中添加头文件afxsock.h#include 2. 在你的App的InitInstance()函数的开头加入 if (!AfxSocketInit()){ AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE;}3. 在项目已有的类的实现文件(.cpp文件)中,添加头文件stdafx.原创 2011-10-20 15:08:27 · 872 阅读 · 0 评论 -
linux中关于函数的man查询
在Linux系统中,没有类似于MSDN中的文档,不过仍然可以在命令行下用“man 函数名”来方便的进行查询;而退出查询可以用“Q” 键进行返回;man不仅可以查询到关于函数的说明,而且可以找到函数对应的头文件缺少头文件的情况:一般类似于“sleep was not declare in the scope” 的错误都是由于对应的头文件没有被包含所致。特殊情况下的man使用:原创 2011-10-20 10:31:56 · 646 阅读 · 0 评论 -
Linux系统中setsockopt()函数的使用
转载自:http://linux.chinaitlab.com/c/836103_2.html 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof转载 2011-10-25 10:52:16 · 953 阅读 · 0 评论 -
获取本机IP信息
不能直接获取本机IP信息确实挺纠结的,感觉微软应该给出这样的API接口C++中的实现:一般实现都需要先通过gethostname()函数获取本机的名字,然后再调用gethostbyname()函数来获取主机的信息。gethostname()函数的说明如下:int gethostname(char FAR *name, int namelen);其中,name是主机的名字,是输出原创 2011-10-25 14:05:54 · 837 阅读 · 0 评论 -
使用套接字实现多播通信
多播通信需要如下三个条件:(1)使用UDP传输协议(2)使用多播地址(224.0.0.1-239.255.255.255)(3)另外需要中间的所有路由器都需要支持多播协议才可以。需要注意的一点:在MSDN中关于setsockopt()函数有一个注意事项:Note If the setsockopt function is called before thebind原创 2011-10-26 14:53:17 · 1668 阅读 · 0 评论 -
使用套接字实现广播通信
广播消息使用UDP通信协议1. Windows需要先调用WinSock版本,然后再创建套接字;而在Linux下可以直接创建套接字;注意:创建UDP套接字socket(AF_INET, SOCK_DGRAM, 0);2.调用setsockopt()函数设置套接字;函数说明如下:int setsockopt(SOCKET s,int level,int optname,原创 2011-10-25 15:27:34 · 2397 阅读 · 0 评论 -
C# 套接字的select选择模型
select选择模型是套接字进行异步IO的基本模式,非常方便。在C++中,select()函数的原型如下:int select( __in int nfds, __in_out fd_set* readfds, __in_out fd_set* writefds, __in_out fd_set* exceptfds,原创 2011-11-17 11:23:43 · 6901 阅读 · 0 评论 -
C++项目转到C#时碰到的几个问题
C#纯属初学,很多东西还不是很明白,所以在转换的过程中碰到一些比较菜的问题,自己记录下1.句柄C++中句柄类型为:HANDLEC#中句柄类型为:IntPtr2. 判断字符串是否为空(1) 用长度判断:bool isEmpty = (str.Length == 0);(2) 用Empty判断:bool isEmpty = (str == String.Empty);(3)原创 2011-11-14 16:05:08 · 1043 阅读 · 0 评论 -
Linux下通用线程池的构建
转自:http://blog.csdn.net/tingya/article/details/226614 这篇文章是04年的文章,比较老了,但思路不错(原文中缺少图,自己做了添加,代码也修改了一部分,如果觉得有问题可以一起讨论)另外,这篇文章的思路可以参考,但实际设计类的时候感觉不是太合理。有太多的相互引用,以至于看完代码之后感觉很混乱。本文给出了一个通用的线程池框架,该框架将与线程转载 2011-11-17 14:05:59 · 3077 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/IBM的文库里面确实有很多好东西!部分名词改成了我习惯的方式,建议看原文。背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁转载 2011-11-21 13:53:48 · 720 阅读 · 0 评论 -
线程池中线程的控制
版权所有,转载请与作者联系。在描述线程池的原理时,一般都会看到如下描述:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。刚开始的时候以为线程只执行任务就好,执行完之后用SuspendThread()函数挂起就行,下次有任务的时候再唤醒线程;后来发现,唤醒线原创 2011-11-21 12:01:51 · 1158 阅读 · 0 评论 -
Linux下的pthread_cond_t变量的部分使用
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->Linux下的pthread_cond_t变量与Windows中的Event类似,都可以用于使子线程等待信号的变化,实现线程执行顺序的控制。区别在于:pthread_cond_signal()仅使信号瞬间变化,而Event的SetEvent()可以使Event处原创 2011-11-23 10:08:38 · 1615 阅读 · 0 评论 -
C++中Event使用
转载自:http://www.cnblogs.com/yuanzfy/archive/2011/08/26/2154460.html之前线程同步用互斥锁Mutex或用户模式的CriticalSection等来进行同步,而且使用效果一直很好,直到最近遇到新问题,朋友推荐用事件去处理。但是对事件了解比较少,所以摘了篇文章看,另外自己做了下试验(所以代码不是转的哦)。概念:事件是用来同步地位转载 2011-11-19 08:24:49 · 9519 阅读 · 0 评论 -
Windows下多线程常用函数
1.线程创建该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄。HANDLE CreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINElpStartAddress, LPVOID lpParameter, DWORDdwCrea原创 2011-11-03 16:13:14 · 2363 阅读 · 0 评论 -
套接字传输文件的试验
原先对文件总是有一种莫名的抗拒,原因未知,最近做东西的时候需要用套接字传送文件、图片之类的东西,没办法,只好硬着头皮上了。做了一个小实验,下面是几点心得:(1)网上查了一些资料,发现其实套接字传送文件和传输文字没什么区别的,因为它只负责发送和接收,而对到底是什么样类型的数据是并不感冒的(以字节为单位传输)(2)发送文件时,需要先把文件以二进制格式打开,读取到内存中,然后再发送;(3原创 2011-11-04 13:25:23 · 2907 阅读 · 0 评论 -
Windows线程同步API
转载自:http://www.cnblogs.com/devj/archive/2011/10/25/2223856.html神作,很全面。需要注意的是,部分内容不适合Vista以下版本的操作系统,不过我已经加了注释标志。本文主要总结创建、结束线程和WIN32 API提供的一些线程同步方法。同步方法包括用户态同步方式:InterLock、CriticalSection、SRWLock和转载 2011-11-04 09:00:52 · 2021 阅读 · 0 评论 -
项目中碰到的错误剖析
项目介绍:服务器Linux,客户端Windows,实现类似于QQ的功能注释:部分仍然是疑惑 1. 定义了一个消息头,格式如下//消息头typedef struct MsgHead{ char cSenderName[16]; char cRecverName[16]; int iMsgType; int msglen; char * data原创 2011-10-25 09:36:39 · 536 阅读 · 0 评论 -
scanf()函数的几个常见问题
转自:http://blog.csdn.net/wayne92 scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题#includevoid main(){ in转载 2011-11-08 11:03:29 · 1649 阅读 · 0 评论 -
scanf()函数的说明
函数说明scanf(格式控制,地址表列) int scanf(char *format[,argument,...])格式字符说明%a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %o 读入八进制整数 %x,%X 读入十六进制整数 %s 读入一个字符串,遇空格、制原创 2011-11-08 13:28:01 · 1122 阅读 · 0 评论 -
MySql在VC中的应用
摘要:MySQL数据库作为一种网络数据库性能十分出色,但其在应用软件中使用较少。本文将主要探讨MySQL提供的两种数据库接口 ——(ODBC API和C API)在VC中的应用,并且形成一个类用以封装C API数据库接口的功能(我要的)。 关键词:MySQL;数据库接口;ODBC API;C API 本文详细介绍VC环境中MySQL数据库服务器不同接口的应用,并最终将产生一个CDat转载 2011-11-29 15:09:52 · 1061 阅读 · 0 评论 -
调用setsockopt()函数时的WSAEINVAL错误
这个问题是在实现多播实验的时候出现的一个错误,找出错误原因的方法比较笨,之后如果看到有好的方法再做更新检查错误代码如下: //加入多播组 ip_mreq mcast; mcast.imr_interface.S_un.S_addr=INADDR_ANY; mcast.imr_multiaddr.S_un.S_addr=inet_addr("234.5.6.7");int nRet=原创 2011-10-26 12:53:07 · 2242 阅读 · 0 评论 -
一个特别的multiple definition错误
环境:ubuntu 11.10,Emacs在BasicMsgSender类中定义了两个静态方法:SendTcpMsg(),SendUdpMsg(),用于一般的发送消息。在其他两个类中,引用了该方法:BasicMsgSender::SendTcpMsg()在链接的时候,提示这两个静态函数被重复定义multiple definition of `BasicMsgSender::sendTc原创 2011-12-02 13:09:54 · 801 阅读 · 0 评论 -
STL中list的使用
转自:http://apps.hi.baidu.com/share/detail/34671110STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。list对象的声明构造():A. l转载 2011-11-27 15:19:01 · 462 阅读 · 0 评论 -
CString
转载:http://baike.baidu.com/view/998109.htm 应该是高手了!CString位于头文件afx.h中。 1、CString 对象的连接 能体现出 CString 类型方便性特点的一个方面就是字符串的连接,使用 CString 类型,你能很方便地连接两个字符串,正如下面的例子: CString gray("Gray");转载 2011-07-07 18:21:50 · 596 阅读 · 0 评论 -
Linux连接MySQL时的错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
连接本地的MySQL数据库引擎时候出现的错误。用mysql_error()函数获取到错误提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)为了查看原因,直接在命令行下输入命令查看是否能进入MySQL(MySQL -u usrName -p),仍然提示:Can't co原创 2011-12-02 14:04:42 · 12602 阅读 · 0 评论