- 博客(27)
- 资源 (65)
- 收藏
- 关注
原创 一个容易忽略的优先级问题
y=x咋一看仿佛结果为y=x*4+1,但实际的结果为y=xC++优先级规则:()的优先级最高其次是*、/、%再次是+、-最后是 >、&、|
2008-10-31 20:28:00 625
原创 读《大话设计模式》---开放-封闭原则
开放-封闭原则是指软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改,对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)无论模块是多么的"封闭",都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对那种变化封闭作出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离
2008-10-31 15:09:00 2341 1
转载 10本经典 C++书籍
1.《C++Primer》 有“C++的百科全书”,C++程序员人手必备。对语法、语义的描述非常细致和严谨,适合有一定经验的C、C++程序员作为工具书和理论指导书使用,但由于其有一定深度,而没有进阶顺序的章节安排,所以不适合初学者做为教材使用,价格略高。 难度:★★☆ 质量:★★★★★ 广度:★★★★★ 深度:★★★★ 性价:★★★☆ 2. 《C++Primer Plus》
2008-10-29 21:50:00 4633 7
原创 读《大话设计模式》---策略模式(Strategy)
策略模式(Strategy) :它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 结构图: //Strategy抽象类,定义所有支持的算法的公共接口。class Strategy{public: Strategy(){}; //算法方法 virtual void AlgorithmInterface(){};};
2008-10-15 18:59:00 1884 2
转载 清空输入缓冲 与 fflush
1. 为什么 fflush(stdin) 是错的首先请看以下程序: #include stdio.h> int main( void ){ int i; for (;;) { fputs("Please input an integer: ", stdout); scanf(
2008-10-14 15:38:00 979
原创 读《大话设计模式》---简单工厂模式(SimpleFactory)(二)
因为对C#不是很熟,所以将C#的程序转成了C++的。 // 一个超市打折的实例#include "stdafx.h"#include "stdio.h"//抽象类class CashSuper{public: virtual double acceptCash(double money) = 0;};//正常收费子类class CashNormal : public CashS
2008-10-13 21:53:00 1141
转载 将string转化为int、double
Method 1:使用C的atoi()和atof()。先利用c_str()转成C string,再用atoi()与atof()。#include #include #include using namespace std; int main() { string s = "123"; double n = atof(s.c_str()); //int n = atoi(s.c_
2008-10-13 18:35:00 9385 1
原创 ifstream中取得文件长度
ifstream in("readme.txt"); ... streampos pos = in.tellg(); // save current position in.seekg(0, ios::end); cout in.seekg(pos); // restore saved posi
2008-10-13 14:37:00 16931 1
转载 new的六种重载形式
当写出p = new P();这样的代码的时候, 实际上有两步操作, 首先分配内存,然后在分配好的内存之上初始化类成员.第二步是有构造函数完成的, 第一步就是new函数的工作.全局的new有六种重载形式, void *operator new(std::size_t count) throw(std::bad_alloc); //一般的版本void *op
2008-10-12 13:49:00 1437
原创 预先准备好内存不够的情况
operator new在无法完成内存分配请求时会抛出异常(以前的做法一般是返回0,一些旧一点的编译器还这么做。你愿意的话也可以把你的编译器设置成这样。关于这个话题我将推迟到本条款的结尾处讨论)。大家都知道,处理内存不够所产生的异常真可以算得上是个道德上的行为,但实际做起来又会象刀架在脖子上那样痛苦。所以,你有时会不去管它,也许一直没去管它。但你心里一定还是深深地隐藏着一种罪恶感:万一new真的产
2008-10-12 13:44:00 562
转载 程序调试常见错误
随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。 而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误,在编程时就加以注意,
2008-10-10 21:08:00 1742
原创 旧的代码在2005下使用需要注意以下几点
将以前的代码在vc2005下编译,经常会遇到类似如下的警告: warning C4996: strcat was declared deprecated. 通常这类警告都是由于调用了字符串相关函数引起的。虽然这警告无伤大雅,仅仅只是说使用的函数已过时(deprecated),但看着实在别扭,且看看ms为什么要设置成这样。 搜索了一下ms的网站,找到了结果。ms认为以前的c/c++库中有
2008-10-10 00:27:00 749
原创 WNDCLASSEX结构
typedef struct { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbr
2008-10-09 13:03:00 3507
转载 Boost中的智能指针
Boost介绍 根据Boost网站的介绍,Boost是“一个免费的,可移植的,同步评测的C++库,Boost堪称是新类库的典范,特别是其中那些能够与ISO C++标准库良好的协同工作的库。”但是Boost不仅仅是一个库的集合。它也是一个快速发展的开发者社区,这些开发者创建,使用以及参与讨论Boost库。Boost社群不仅仅是维护着这个库,而且还为它的使用者和设计者提供学习交流的场所。这个库堪称是一
2008-10-09 11:21:00 777 1
原创 公共语言运行时(CLR)
.NET Framework的核心是其运行时的执行环境,称为公共语言运行时(CLR) (common language runtim) 或 .NET运行时。在CLR的控制下运行的代码常常称为托管代码。 但是,在CLR执行开发的源代码之前,需要编译它们(在C#中或其他语言中)。在.NET中,编译分为两个阶段: (1) 把源代码编译为Microsoft中间语言(IL)。
2008-10-07 16:10:00 1486
转载 仿STL中的堆算法的一个实现
#include "HeapAlgorithm.h"#include #include using namespace std;// push_heap为向堆中添加一个新的元素, 调用这个算法的前提是[First, Last)之间的元素满足堆的条件// 新加入的元素为Lastvoid push_heap(int* pFirst, int* pLast);// pop_heap为从
2008-10-05 15:40:00 763
转载 stl容器总结
一 迭代器(iterator)迭代器是类似指针的对象,STL算法利用它们对存储在容器中的对象序列进行遍历。5种类别:1、输入迭代器 2、输出迭代器 3、前向迭代器 4、双向迭代器 5、随机访问迭代器 常用的迭代器: istream_iterator输入流迭代器 istreambuf_iterato
2008-10-05 11:20:00 819
原创 Bjarne:什么是函数对象?
顾名思义,就是在某种方式上表现得象一个函数的对象。典型地,它是指一个类的实例,这个类定义了应用操作符operator()。 函数对象是比函数更加通用的概念,因为函数对象可以定义跨越多次调用的可持久的部分(类似静态局部变量),同时又能够从对象的外面进行初始化和检查(和静态局部变量不同)。例如:class Sum { int val; public: Sum(int i) :
2008-10-04 18:23:00 554
原创 Template parameters (C++ only)
在C++中有三种模板参数:Type template parameters (C++ only) Non-type template parameters (C++ only) Template template parameters (C++ only)在模板参数的声明中即可以使用关键字class也可以使用关键字typename,但是在模板参数的声明中不能指定存储的类型(st
2008-10-03 21:21:00 1090
原创 读大《话设计模式》---简单工厂模式(SimpleFactory)(一)
[说明]简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。 简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(Simple Factory)模式,又称静态工厂方法模
2008-10-03 16:44:00 787 1
原创 UML类图详解
本文是我在读《大话设计模式》时的一篇读书笔记 这个矩形框代表一个类,这是一个类图,它包括三层:显示类的名称,如果是抽象类,则用斜体表示。类的特性,通常为字段和属性。类的操作,通常是方法和行为。注意前面的符号:"+"表示Public,"-"表示private,"#"表示protect。 这是一个接口图,与
2008-10-03 15:20:00 1677
转载 详细解说STL string
前言: string 的角色 C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl, php, 和Shell脚本以后,开始理解了以前为什么有人说C++文本处
2008-10-03 11:01:00 571
原创 C++中单件设计模式(Singleton pattern)的语法实现
当我们需要只有一个类的实例返回给调用程序时,就可以使用单件设计模式(Singletom pattern).这种类的声明如下:class TheOnlyInstance{public: static TheOnlyInstance * GetTheOnlyInstance();protected: TheOnlyInstance(){}priv
2008-10-03 10:27:00 997
转载 函数的递归和调用
一、基本内容: C/C++语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。 要点: 1、C/C++语言函数可以递归调用。 2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。 二、递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来
2008-10-03 00:59:00 1000
原创 大值的存储和表示
#include #include using namespace std; int main() { int data[51]; /* 存储50位数,为了方便记忆,不适用data[0] */ int index = 1; /* 表示数组中的位数 */ int n;
2008-10-03 00:32:00 720
转载 C/C++/Perl/汇编/Java效率比较
事发 我无聊的翻着散落案头的书籍,这些都是五花八门的关于编程和系统管理的著作。干了这么多年程序员,大大小小的软件和项目也做了无数。每每有新入行的朋友问我这个所谓的"老前辈":哪种语言最好之类的问题,我总会作出一副知识渊博的样子,复述着从更老的老前辈那里听来的或者某些名著上看来的"知识"。就好比我们从学习编程的第一天起,就被计算机老师告知,COBOL语言是擅长处理商务事务、FOTRAN语言是用
2008-10-02 11:44:00 7091 3
转载 VC++下命名管道编程的原理及实现
概述管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行单向或双向通信的一种命名的管道。一个命名管道的所有实例共享同一个管道名,但是每一个实例均拥有独立的缓存与句柄,并且为客户——服务通信提供有一个分离的管道。实例的使用保证了多个管道客户能够在同一时间使
2008-10-01 23:59:00 852
C++问题集-C++ FAQ (2nd editer).CHM
2008-09-05
《Windows用户态程序高效排错》
2008-08-25
《计算机编程艺术三》
2008-08-24
计算机编程艺术卷1
2008-08-22
全局键盘钩子源码
2008-08-22
学习.Web.设计(高清晰PDF).Part2.rar
2008-08-20
学习.Web.设计(高清晰PDF).Part1.rar
2008-08-20
一本使用qt的介绍c++和设计模式的好书 .rar
2008-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人