
C/C++
文章平均质量分 61
三世
这个作者很懒,什么都没留下…
展开
-
回调函数测试例子
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 回调函数实现的机制是 ⑴定义一个回调函数; ⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注...原创 2012-09-29 14:15:22 · 1180 阅读 · 0 评论 -
【转】认识 C++ 中的 explicit 关键字
C++ 中 explicit 关键字的作用 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 explicit使用注意事项:explicit关键字只能用于类内部的构造函数声明上,explicit 关键字作用于单个参数的构造函数。 在C++中,explicit关键字用来修...原创 2012-02-28 17:09:50 · 165 阅读 · 0 评论 -
C++ 对象关系映射(ORM)介绍
用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA……非常方便实用。用过C#的同学们也都知道通过CodeSmith软件,生成微软的PetShop分层模式,达到数据持久层的代码,也非常方便。那么我们用C++的怎么办,我们也是面向对象编程,在工作...2012-02-28 15:03:32 · 1143 阅读 · 0 评论 -
only static const integral data members can be initialized within a class
翻译一下:只有静态整型常量数据成员能在类中初始化那么哪些数据属于整型呢,下面的都是charshortintlonglong long所以只有以上这些类型的数据能在类中初始化,也就是你可以这样写1 class Test2 {3 static const int i = 100 ;4 } ;5 但不能这样写,否则就会出现如标题所示的编译错误...原创 2012-06-28 11:40:48 · 166 阅读 · 0 评论 -
fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
我觉得作者写的挺好,评论也写的很对。 目前我的项目就是在VS2008+Qt+win7上开发的。我上次总结的QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件也说明了这个问题。 在windows平台下,MSVC编译器的环境下,对大文件的数据读写操作。采用C语言的形式(例如fread 和 fwrite )确实比C++/QT的串行序列化读写文件,速度快上好几倍。...原创 2012-06-27 17:21:47 · 1118 阅读 · 0 评论 -
C++中如何表示2进制,8进制、16进制变量
1、C和C++都没有提供二进制数的表达方法。2、C,C++语言中,如何表达一个八进制数呢? 如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。 所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是...2012-02-25 15:13:30 · 3613 阅读 · 0 评论 -
C语言文件操作函数大全
C语言文件操作函数大全clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbu...原创 2012-06-18 13:54:46 · 113 阅读 · 0 评论 -
c++ 之类的前置声明
转自:http://blog.youkuaiyun.com/fjb2080/archive/2010/04/27/5533514.aspx 作者:清林,博客名:飞空静渡刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样: //a.h #include "b.h" ...原创 2012-02-15 10:27:00 · 165 阅读 · 0 评论 -
c/c++ 中文件路径的表示
文件路径的表示可以分为绝对路径和相对路径:绝对路径表示相对容易,例如:pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); //给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\" vc工程默认访问的目录是工程目录,相对路径有以下多种形式:pDummyFile =...原创 2012-02-15 09:05:58 · 127 阅读 · 0 评论 -
c++中enum 如何使用
c++中enum 如何使用 来源:http://www.cnblogs.com/dabaopku/archive/2010/04/21/1717331.html 枚举类型,顾名思义,“枚”作为量词,作“个”讲,那么枚举,就是一个一个的列举,如果一件事情能够被一个一个的列举,那么它的数量肯定就是有限的,否则是不能被一一列举出来的。所以枚举类型即为能被列举的常量的...原创 2011-12-09 10:32:29 · 144 阅读 · 0 评论 -
const用在成员函数后
const用在成员函数后 主要是针对类的const对象 如: class Text{ public: void printconst(void)const { cout < < "hello " < <endl; ...原创 2011-12-07 17:24:42 · 150 阅读 · 0 评论 -
【转】动态链接库(Dynamic Link Library)学习笔记
这篇写的很好,收藏一下。转载:http://www.cnblogs.com/yxin1322/archive/2008/03/08/donamiclinklibrary.html作者:EricYou 转载请注明出处 注:本文所写的动态链接库指传统的DLL,并非是.NET中的Assembly. 我对动态链接和动态链接库的概念并不陌,但...原创 2012-02-08 17:28:01 · 169 阅读 · 0 评论 -
Typedef的一些用法总结
1、四个用途用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char...原创 2012-02-05 16:33:39 · 126 阅读 · 0 评论 -
宏定义Define的一些用法
---转载百度文库一.#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1.1 ...原创 2012-02-05 09:19:04 · 182 阅读 · 0 评论 -
Qt持久性对象进行序列化
转载:http://cool.worm.blog.163.com/blog/static/64339006200832642918250/Mfc和Java中自定义类的对象都可以对其进行持久性保存,Qt持久性对象进行序列化当然也是必不可少的。不过这个问题还真困扰了我很长时间……Mfc通过重写虚函数Serialize()、Java则是所属的类必须实现java.io.Serializable或Ext...原创 2011-12-05 16:40:48 · 568 阅读 · 0 评论 -
C++构造函数/析构函数 设置成private的原因
将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其他函...原创 2012-03-24 01:07:58 · 125 阅读 · 0 评论 -
C++长字符串换行
宏定义:#define STRING "abcdefg \ "dfsdgdfhfdh"如果字符序列超过一行,可以在该行末尾用一反斜杠续行。例如:CString ss;ss = “this is a very long ” \ “string...原创 2012-03-29 11:02:46 · 576 阅读 · 0 评论 -
ostringstream 的清空数据方法
关于C++中 <sstream>中ostringstream的清空方法。 ostringstream outString;outString.str("");//清空数据 容易混淆的是,outString.clear()//清空错误的标志位 outString.str()有种两种用法,Get/set the associated str...2012-09-27 15:28:57 · 6798 阅读 · 1 评论 -
输入参数和输出参数
1.输入参数,是函数的调用者,传递给函数的实现者,对函数来说,是函数外部传入给函数内部使用的输出参数,是函数的实现者,传递给函数的调用者,对函数来说,是函数内部返回给函数外部的需要说明的是,有些参数,即是输入参数又是输出参数2.输出参数可以有多个,返回值只能有一个输出参数有时候又是输入参数,返回值没有这种情况当函数只有一个输出时,即可以采用输出参数的方式,也可以...原创 2012-09-26 10:43:22 · 2765 阅读 · 0 评论 -
ofstream、ifstream、fstream
学习一下C++的文件流: ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(< < ) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的...原创 2012-09-23 19:23:37 · 189 阅读 · 0 评论 -
将ostream 对象转换成字符串流输出
将ostream 对象转换成字符串流输出 因为项目中需要获取控制台程序的输出结果。所以必须把stream 捕获。 #include <strstream>#include <ostream>#include <iostream>using namespace std;void f(ostream& out){...原创 2012-09-22 10:47:24 · 2903 阅读 · 0 评论 -
sstream和strstream以及fstream
在C++有两种字符串流,也称为数组I/O流,一种在sstream中定义,另一种在strstream中定义。 它们实现的东西基本一样。 strstream里包含 class strstreambuf; class istrstream; class ostrstream; class strstream; 它们是基于C类型字符串char*编写的。 sstream中包含 class istrings...原创 2012-09-22 10:38:14 · 262 阅读 · 0 评论 -
字符串流 ostrstream 和 istrstream
ostrstream类流/*ostrstream流可以实现将一个二进制数转换成串的字符存入在字符数组对象中。*/#include<iostream.h>#include<strstrea.h>#include<string.h>void main(){ const int LENGTH=80; char buff...原创 2012-09-22 10:28:14 · 849 阅读 · 0 评论 -
将有格式的int解析成float
因项目中有一个需求:将采集到所有short int 转换成float型,而且int的后四位是float的小数段,前8位是float的整数段 例如采集到一个 qint16 m = 0x1234,我们需要把0x123.4(假设这样写),真正的float值为291.3999 QTime t; t.start(); qint16 m = 0x1234; q...原创 2012-09-20 18:10:41 · 211 阅读 · 0 评论 -
fatal error C1083: Cannot open include file: 'iostream.h': No such file or dire
错误: fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory 我的源代码测试回调函数,编译不通过,出现如上错误。 原因: 将#include <iostream.h>改为 #include <iostream>using name...原创 2012-09-20 17:19:56 · 2318 阅读 · 0 评论 -
C++中类的声明
可以声明一个类而不定义它 class Screen;//declaration of the Screen class 这个声明,有时候被称为前向声明(forward declaration),在程序中引入了类类型的Screen.在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员...原创 2012-08-29 16:28:48 · 6872 阅读 · 0 评论 -
C++ 实现把非静态成员函数作为回调函数(非static)
众所周知,C++的类成员函数不能像普通函数那样用于回调,因为每个成员函数都需要有一个对象实例去调用它。 通常情况下,要实现成员函数作为回调函数,一种常用的方法就是把该成员函数设计为静态成员函数,但这样做有一个缺点,就是会破坏类的结构性,因为静态成员函数只能访问该类的静态成员变量和静态成员函数,不能访问非静态的,要解决这个问题,需要把对象实例的指针或引用做为参数传给它。...原创 2012-11-16 10:10:02 · 2169 阅读 · 1 评论 -
【转】windows多线程CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了一...原创 2012-11-15 14:40:50 · 162 阅读 · 0 评论 -
windows下C语言多线程编程
_beginThreadex创建多线程解读一、需要的头文件支持 #include <process.h> // for _beginthread()需要的设置:ProjectàSetting-->C/C++-->User run-time library 选择Debug Multithreaded 或者Multithreaded。即...原创 2012-11-15 14:37:53 · 688 阅读 · 0 评论 -
VS2008程序发布的环境配置
和以往VC版本类似,VS2008程序发布需要有运行的环境。根据所编译的版本(release、debug)不同,各自的具体配置步骤如下:Release版:1. 在“C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages”中找到vcredist_x86文件夹,拷贝vcredist_x86.exe文件到需要运行的PC...原创 2012-04-06 16:21:46 · 376 阅读 · 0 评论 -
【转】位操作基础篇之位操作全面总结
Title: 位操作基础篇之位操作全面总结Author: MoreWindowsE-mail: morewindows@126.comKeyWord: C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操作压缩空间 筛素数 位操作趣味应用 位操作笔试面试位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行全面总结,帮助大家梳理知识...原创 2012-04-01 16:48:47 · 156 阅读 · 0 评论 -
VC socket 发送类对象
转载:http://wmnmtm.blog.163.com/blog/static/382457142010107115638724/?fromdm&fromSearch&isFromSearchEngine=yes 假设你用这个类定义了一个对象dt,那么可以用send(sock, &dt, sizeof(dt), 0)来一次性发送。接收端,定义一个指针 da...原创 2011-12-05 16:11:12 · 159 阅读 · 0 评论 -
c++incline函数
原文:http://blog.sina.com.cn/s/blog_7336020f0100p6rh.html 用内联取代宏:1.内联可调试;2.可进行类型安全检查或自动类型转换;3.可访问成员变量。另外,定义在类声明中的成员函数自动转化为内联函数。文章(一)内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #define...原创 2011-12-02 18:37:05 · 242 阅读 · 0 评论 -
C++ delete删除动态分配的内存
耗尽内存尽管现代机器的内存容量越来越大,但是自由存储区总有可能被耗尽。如果程序用完了所有可用的内存,new 表达式就有可能失败。如果 new 表达式无法获取需要的内存空间,系统将抛出名为 bad_alloc 的异常。我们将在第 6.13 节介绍如何抛出异常。撤销动态创建的对象 动态创建的对象用完后,程序员必须显式地将该对象占用的内存返回给自由存储区。C...原创 2011-12-02 14:07:08 · 1363 阅读 · 0 评论 -
C++中的头文件和源文件
一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是...原创 2012-05-09 14:54:30 · 180 阅读 · 0 评论 -
C语言下,获取文件信息
C语言下,如何获取文件的生成时间,日期和文件大小等文件信息。 1、标准库函数并未提供对应的实现,这个Linux上GCC中struct stat的资料struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ mode_t ...2012-05-08 15:07:02 · 1275 阅读 · 0 评论 -
C 语言fopen打开模式
r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原...原创 2012-05-05 17:09:25 · 270 阅读 · 0 评论 -
关于fseek失效的一种情况
最近在试一下fseek这个函数,发现总是不能达到目的,fseek根本就是无效,所用的IDE环境是VC6采用的C文件格式void main(){FILE *pfile = fopen("a.txt","a+");fputs("i love you\n",pfile);fseek(pfile,0,SEEK_SET);fwrite("here is write\n",1...原创 2012-05-05 16:39:25 · 1887 阅读 · 1 评论 -
浅谈C++容器(转)
什么是容器首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方...原创 2012-05-03 13:58:38 · 175 阅读 · 0 评论 -
C语言随机函数
1、rand()函数 #include "stdio.h" #include "stdlib.h" #include "time.h" int main(void) { int i; srand((unsigned int)time(NULL)); printf("Ten random numbers from...原创 2012-05-03 09:55:05 · 766 阅读 · 0 评论