平台无关语言的编程
文章平均质量分 68
ruixj
这个作者很懒,什么都没留下…
展开
-
使用http 上传文件的原理
http 文件上传 RFC1867原创 2010-11-03 23:51:00 · 36780 阅读 · 2 评论 -
位域和sizeof
为什么打印出来的结果是不一样的,unsigned field3给定不同的位字段打印出来的值不一样,而且既然声明为unsigned field3为什么按%d打出来还是-4?而sizeof(struct BitField)的值始终是8,我是在gcc下测试的. #include struct BitField { int转载 2010-03-29 17:13:00 · 1156 阅读 · 0 评论 -
C++上机试验的源码--多维的动态对象数组
#include using namespace std;//点坐标类class Point{ int x,y; //点坐标public: Point(void) { x=y=0; } Point(int xi,int yi) { x=转载 2010-03-22 11:08:00 · 898 阅读 · 0 评论 -
c++空类实例大小不是0原因)
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化转载 2010-03-09 16:18:00 · 680 阅读 · 0 评论 -
C输入输出
综述看一下输入操作的原理,程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin等输入输出函数直接从输入缓冲区中取数据。正因为cin等输入输出函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。---------------第一:要注转载 2010-03-10 17:06:00 · 2239 阅读 · 1 评论 -
类的普通成员函数的指针
很多朋友都知道虚函数有虚函数指针,并且存放在对象的虚函数表中,它和普通成员变量一样与对象相关,因此虚函数的指针是和对象级的。一个类的普通成员函数是类级的,因此普通成员函数的指针也是类级的。一个类的普通成员函数的指针,少有文献提及,因为很少需要用到普通成员函数的指针。尽管如此,在一些特殊的场合,还是有可能需要用到的。1) 成员函数简介在C++中,成员函数的指针转载 2010-03-09 16:47:00 · 676 阅读 · 0 评论 -
外部连接,内部连接,源文件的组织
一、前提:1. 声明和定义 一个声明将一个名称引入一个作用域; 在c++中,在一个作用域中重复一个声明是合法的。 一个定义提供一个实体(类型、实例、函数)在一个作用域的唯一描述。 在同一作用域中不可重复定义一个实体。 类型 简单类型和复合类型: 声明: typedef int INT32; 定义:原创 2010-03-11 09:37:00 · 1624 阅读 · 0 评论 -
关于const char*, char const* and char *const 等的区别
1 关于const char*, char const* and char *const 等的区别 2 3 助记方法: 4 把一个声明从右向左读 5 比如: 6 char * const cp; 7 //cp is a const pointer to char 8 9 const char * cp; 10 //cp is a poi转载 2009-11-12 14:27:00 · 857 阅读 · 0 评论 -
XML规范化(二)
XML规范化(二) 上一篇文章通过一个例子介绍了如何规范化XML文件,这一篇文章主要讲述XML文件子集规范化遇到的一些问题。 我们从一个XML文件提取其中一部分内容时,一般是将一个子节点从它的父节点分离出来,我们称这个子节点为孤儿节点,提取出来的文件称为文档子集。如果孤儿节点的名字空间上下文在其父节点中声明,文档子集原来的名字空间上下文就可能丢失原创 2009-10-28 23:52:00 · 808 阅读 · 0 评论 -
XML规范化
http://www.xml.com/pub/a/2002/09/18/c14n.html XML规范化(1) 文章的主要目的是说明如何规范化XML文档,为了更好地了解规范化的规则,我在翻译时省略了一些内容(XML数字签名;非对称密钥体系和信息摘要)。 让我们先来看看下面两份文件(文件1和文件转载 2009-10-28 23:46:00 · 1135 阅读 · 0 评论 -
位域和sizeof 2
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;4) 如果位域字段之间转载 2010-03-29 17:35:00 · 969 阅读 · 0 评论 -
C++程序的阅读
C++中的类型转换操作符的重载 C++中类对象定义了类型转换操作符后,表达式的含义就要仔细分析。任何一步都有可能导致类型转换函数的调用。这是C和C++很大的不同。 C++中全局变量 对于C++中全局对象变量,其构造函数的调用先于main,实在可执行文件被装载时就调用的,处于ELF中的.init section. C语言中,全局变量没有构造函数。原创 2010-04-11 11:07:00 · 1289 阅读 · 0 评论 -
巧妙的offset
#define offsetof(s,m) (size_t)&(((s *)0)-> m) 然后到网上查了一下,发现还真的是很有用,附带一位大侠的解说: struct AAA { int i;转载 2010-04-10 23:18:00 · 189 阅读 · 1 评论 -
使用zlib库进行数据压缩
压缩最核心接口的使用例子原创 2010-09-05 13:06:00 · 3758 阅读 · 1 评论 -
非递归遍历文件夹
非递归遍历文件夹原创 2010-09-05 12:56:00 · 4671 阅读 · 0 评论 -
C++箴言:绝不在构造或析构期调用虚函数
C++ 构造函数 析构函数 与虚函数的关系转载 2010-06-03 15:59:00 · 918 阅读 · 0 评论 -
关于C++中函数返回引用的讨论
从函数返回引用确保其引用的对象在函数执行完后仍然存在。引用类型返回值的主要特征是可以作为左值,这意味着我们可以在赋值语句的左边使用返回引用的函数的结果。 永远不要从函数中返回局部变量的引用 C++中,返回引用是一个比较晦涩的概念。在书中,对此仅仅做了一个一般的介绍,并没有展开。我觉得有必要对此进行一定的展开。(1)首先,返回引用,要求在函数的参数中转载 2010-05-27 18:19:00 · 1942 阅读 · 1 评论 -
volatile用法总结
首先:volatile是变量修饰符,而synchronized则作用于一段代码或方法;1:例如int geti1() {return i1;}由于每个线程可以有它自己的变量拷贝,而这个变量拷贝值可以和“主”内存区域里存放的不同。导致存在一种可能:“主”内存区域里的i1值是1,线程1里的i1值是2,线程2里的i1值是3——这在线程1和线程2都改变了它们各自的i1值,而且这个改变还原创 2010-05-21 09:35:00 · 996 阅读 · 0 评论 -
The function return
Stack during Subroutine Call 基本知识: http://www.cs.virginia.edu/~evans/cs216/guides/x86.html#include using namespace std;/*Function to return struct */struct A{ int原创 2010-04-21 09:42:00 · 1182 阅读 · 0 评论 -
Funtion call conventions
Other resource about function-call conventions.http://www.codeproject.com/KB/cpp/calling_conventions_demystified.aspxhttp://www.intel.com/products/processor/manuals/index.htm Architecture Softwar转载 2010-04-20 09:54:00 · 973 阅读 · 0 评论 -
volatile用法总结
在用C语言编程时,经常会遇到使用关键字volatile修饰的变量,比如:在单片机头文件中一些寄存器的定义,如#define DDRD (*(volatile unsigned char*)0x31),还有全局变量,如volatile unsigned chartimecnt等。为什么要在这些变量前面加上volatile呢?volatile到底有什么作用? 一个定义为v转载 2010-04-20 09:51:00 · 878 阅读 · 0 评论 -
C++'s mutable
MutableThe keyword mutable is used to allow a particular datamember of const object to be modified. This is particularly useful ifmost of the members should be constant but a few need to be up转载 2010-04-20 09:43:00 · 761 阅读 · 0 评论 -
C++成员初始化列表
类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 初始化阶段可以是显式的或隐式的,取决于是否存在成员初始化表。隐式初始化阶段按照声明的顺序依次调用所有基类的缺省构造函数,然后是所有成员类对象的缺省构造函数。2.进入构造函数后在构造函数中执行一般计算 计算阶段由构造函数体内的所有语句构成。在计算阶段中,数据成员的原创 2009-08-20 11:14:00 · 1771 阅读 · 1 评论 -
(转)ACE反应器(Reactor)模式(3)
在服务器端使用Reactor框架 使用Reactor框架的服务器端结构如下: 服务器端注册两种事件处理器,ClientAcceptor和ClientService ,ClientService类负责和客户端的通信,每一个ClientService对象对应一个客户端的Socket连接。 ClientAcceptor专门负责被动接受客户端的连接,并创建ClientService对象。这样,原创 2008-07-07 17:55:00 · 823 阅读 · 0 评论 -
细读《Effective C++》之四
Chapter 4. Designs and Declarations什么样的接口是你应该提供给client的?或者,换句话说:什么样的接口是你希望被提供的?If an attempted use of an interface wont do what the client expects, the code wont compile; and if the code does co转载 2007-11-10 22:39:00 · 761 阅读 · 0 评论 -
细读《Effective C++》之二
第二章 Constructors, Destructors, and Assignment Operators这一章内容参考Stanley B. Lippman的《Inside the C++ Object Model》也会有不小的收获。条款05:Know what functions C++ silently writes and calls在最早接触C++的class的时候,你就被转载 2007-11-10 22:24:00 · 866 阅读 · 0 评论 -
C++学习
一 C++总体结构 (1)类型 简单类型 复合类型: 数组 指针 枚举 联合 结构 类 (1)成员函数原创 2007-11-10 20:27:00 · 882 阅读 · 0 评论 -
fwrite
※ fwrite,fread,fopen读写结构体。 ※用fwrite,fread来读写文件,总结都在代码注释之中,注意读写的时候用了二进制模式,用文本模式会出现问题。#i nclude "iostream"#i nclude "iomanip"using namespace std;typedef struct tagTEST{ char Name[40]; int Size;原创 2006-08-15 18:24:00 · 1631 阅读 · 0 评论 -
编程指南
读林斌博士写好代码十个秘诀软件的质量属性鲁棒 - Solid and Robust Code简洁 - Maintainable and Simple Code高效 - Fast Code简短 - Small Code共享 - Re-usable Code可测试 - Testable Code可移植 - Portable Code 集百家之长, 归我所用 - Follow Bas转载 2006-07-17 11:52:00 · 922 阅读 · 0 评论 -
C++函数模版
模版参数:位于函数模板名称的前面,在一对尖括号内部进行声明: template <typename T> //T是模板参数调用参数:位于函数模版名称的后面,在一对圆括号内部进行声明: 模版名称(T const& a, T const& b) //a,b是调用参数。可以由调用参数演化出模版参数的模板实参,称为模版参数实参演绎化。如果不能够由进行实参演绎化,则必须显示指定模版参数的实参列表原创 2006-11-21 11:46:00 · 1175 阅读 · 0 评论 -
The Roadmap of C++
本文为介绍性文章,会随笔者学习C++语言不断更新。 1,前言 无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接转载 2006-05-16 14:54:00 · 1796 阅读 · 1 评论 -
C++中函数中参数和返回值都是用户定义类型(这里主要是类的情况时的分析)
以下这个程序中使用了参数传值和返回值传值的操作:class A{public: A() { i = 0; } A(const A& c) { i = c.i; }private: int i;};A funbyValue(A c){ return c;}void main(int argc,char* argv[]){原创 2006-03-06 12:06:00 · 2930 阅读 · 0 评论 -
细读《Effective C++》之五
如果说对于对象模型的深刻理解是为了更好地设计和声明,那么对于实现的斤斤计较则是为了更高的效率。Item 26 - 28条款26:Postpone variable definitions as long as possible不要过早地定义变量,直到真正需要它;对于非build-in对象,能够用copy constructor替代时,就不要让它用default constructor和转载 2007-11-10 22:41:00 · 695 阅读 · 0 评论 -
细读《Effective C++》之九
Chapter 6. Inheritance and Object-Oriented Design 条款36:Never redefine an inherited non-virtual functionclass B {public: void mf(); ...};class D: public B {public: void mf(); ... };D转载 2007-11-10 22:52:00 · 911 阅读 · 0 评论 -
细读《Effective C++》之十
Chapter 6. Inheritance and Object-Oriented Design 这一章围绕inhertance和OOD进行讨论。Item 32:如果不是"is-a"关系,就一定不要用public inheritance,因为public inheritance就意味着base class的所有操作对于derived class完全适用。Item 33:尽量不让bas转载 2007-11-10 22:54:00 · 937 阅读 · 0 评论 -
(转)ACE反应器(Reactor)模式(2)
在Socket编程中,常见的事件就是"读就绪","写就绪",通过对这两个事件的捕获分发,可以实现Socket中的异步操作。 Socket编程中的事件处理器 在前面我们已经介绍过,在ACE反应器框架中,任何都必须派生自ACE_Event_Handler类,并通过重载其相应会调事件处理函数来实现相应的回调处理的。在Socket编程中,我们通常需要重载的函数有 handle_input(转载 2008-07-07 17:51:00 · 906 阅读 · 0 评论 -
static_cast、dynamic_cast、reinterpret_cast、和const_cast
static_cast、dynamic_cast、reinterpret_cast、和const_cast关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast转载 2008-06-23 13:51:00 · 915 阅读 · 0 评论 -
C++成员函数的重载、覆盖与隐藏
成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual原创 2008-06-06 22:06:00 · 836 阅读 · 0 评论 -
Catalyst入门教程
http://catalyst.perl.org/calendar/2006/21http://blog.chinaunix.net/u/26905/article_49889.html原创 2008-05-08 17:07:00 · 1171 阅读 · 0 评论 -
ACE反应器(Reactor)模式(1)
1. ACE反应器框架简介反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回,转载 2008-07-07 17:49:00 · 1269 阅读 · 0 评论