内容列表
- More Effective C++ 条款16
- 效率
我怀疑一些人在C++软件开发人员身上进行秘密的巴甫洛夫试验,否则为什么当提到“效率”这个词时,许多程序员都会流口水。(Scott Meyers真幽默 译者注)
事实上,效率可不是一个开玩笑的事情。一个太大或太慢的程序它们的优点无论多么引人注目都不会为人们所接受。本来就应该这样。软件是用来帮助我们更好地工作,说运行速度慢才是更好的,说需要32MB内存的程序比仅仅需要16MB内存
- 分类:编程语言 查阅全文
- 直接写屏显示文字
- 看到有前(钱)人发表了DOS下的东西,咱也凑凑热闹,把毕业设计时用过的一个小东西也拿出来晾晾,别霉了!
这是一个DOS下直接写屏显示16点阵汉字的演示程序功能由函数OutText()完成,该函数区别于大多数此类函数的特点如下.支持视区剪裁输出.支持屏幕任意位置输出(不局限于一般直接写屏方法640X480分辩率下的输出位置必须为8的整数倍).支持英文字母及数字的8X16点阵输出.支持直接写屏下的彩
- 分类:编程语言 查阅全文
- C语言程序书写规范
- 我做C语言底层开发,积累了一些代码书写的经验供大家参考:
1.C语言书写规范
1.1符号命名规则1.1.1符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。命名采用匈牙利命名法。规则如下: (1)所有宏定义、枚举常数和const变量
- 分类:编程语言 查阅全文
- More Effective C++ 条款15
-
条款15:了解异常处理的系统开销
为了在运行时处理异常,程序要记录大量的信息。无论执行到什么地方,程序都必须能够识别出如果在此处抛出异常的话,将要被释放哪一个对象;程序必须知道每一个入口点,以便从try块中退出;对于每一个try块,他们都必须跟踪与其相关的catch子句以及这些catch子句能够捕获的异常类型。这种信息的记录不是没有代价的。确保程序满足异常规格不需要运行时的比较(
- 分类:编程语言 查阅全文
- More effective C++ 条款14
-
条款14:审慎使用异常规格(exception specifications)
毫无疑问,异常规格是一个引人注目的特性。它使得代码更容易理解,因为它明确地描述了一个函数可以抛出什么样的异常。但是它不只是一个有趣的注释。编译器在编译时有时能够检测到异常规格的不一致。而且如果一个函数抛出一个不在异常规格范围里的异常,系统在运行时能够检测出这个错误,然后一个特殊函数unexpected
- 分类:编程语言 查阅全文
- More effective c++ 条款10(下)
- 条款10:在构造函数中防止资源泄漏(下)
你可能已经注意到BookEntry构造函数的catch块中的语句与在BookEntry的析构函数的语句几乎一样。这里的代码重复是绝对不可容忍的,所以最好的方法是把通用代码移入一个私有helper function中,让构造函数与析构函数都调用它。class BookEntry {public: ... &nb
- 分类:编程语言 查阅全文
- More effective c++ 条款10(上)
- 条款10:在构造函数中防止资源泄漏(上)
如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音)。
为了实现这个通信录,你可以这样设计:class Image { &
- 分类:编程语言 查阅全文
- TC2.0下写的DOS底下图形中文菜单
- 这是本人自编的在DOS下的比较全面操作的图形中文菜单!不过当前目录需要有UCDOS自带的几个字库文件!hzk24h,hzk24k文件
/*---------------------------------------------------------------------------File: MENU.CFunction:&nbs
- 分类:编程语言 查阅全文
- More effective C++ 条款13
-
条款13:通过引用(reference)捕获异常
当你写一个catch子句时,必须确定让异常通过何种方式传递到catch子句里。你可以有三个选择:与你给函数传递参数一样,通过指针(by pointer),通过传值(by value)或通过引用(by reference)。
我们首先讨论通过指针方式捕获异常(catch by pointer)。从throw处传递一个异常到catc
- 分类:编程语言 查阅全文
- More effective C++ 条款12
- 条款12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别:class Widget { ... }; &nbs
- 分类:编程语言 查阅全文
- More Effective C++ 条款7
- 条款7:不要重载overload &&, ||, or ,.
与C一样,C++使用布尔表达式简化求值法(short-circuit evaluation)。这表示一旦确定了布尔表达式的真假值,即使还有部分表达式没有被测试,布尔表达式也停止运算。例如:
char *p;
...
if ((p != 0) && (strlen(p) > 10)) ...
- 分类:编程语言 查阅全文
- More Effective C++ 条款11
- 条款11:禁止异常信息(exceptions)传递到析构函数外
在有两种情况下会调用析构函数。第一种是在正常情况下删除一个对象,例如对象超出了作用域或被显式地delete。第二种是异常传递的堆栈辗转开解(stack-unwinding)过程中,由异常处理系统删除一个对象。
在上述两种情况下,调用析构函数时异常可能处于激活状态也可能没有处于激活状态。遗憾的是没有办法在析构函数内部区分出这两种情况
- 分类:编程语言 查阅全文
- STL性能测试
- 作者主页http://www.chenshuo.com可下载测试文本与源代码
C++ Standard Template Library——STL的性能究竟如何,不同版本的STL其性能差异有多少?为了解这些,让我们来做一个简单的测试吧。
测试的基本思路是用C与C++分别实现一个程序,实现相同的功能,并要求C++程序的主要数据结构用STL中的Containers、Algorithms
- 分类:编程语言 查阅全文
- More Effective C++ 条款9
- 异常
C++新增的异常(exception)机制改变了某些事情,这种改变是深刻的,彻底的,可能是令人不舒服的。例如使用未经处理的或原始的指针变得很危险。资源泄漏的可能性增加了。写出具有你希望的行为的构造函数与析构函数变得更加困难。特别小心防止程序执行时突然崩溃。执行程序和库程序尺寸增加了同时运行速度减少了。
这就使我们所知道的事情。很多使用C++的人都不知道在程序中使用异常,大多数
- 分类:编程语言 查阅全文
- More Effective C++ 条款8
-
条款8:理解各种不同含义的new和delete
人们有时好像喜欢故意使C++语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。
当你写这样的代码:
string *ps = new string("Memory Management");
你使用的new是new操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它
- 分类:编程语言 查阅全文
- BCB5:TrayIcon控件的使用、问题及对策
- BCB5:TrayIcon控件的使用、问题及对策
我个人认为BCB5这个控件的功能还不错,支持多幅自选图标动画、动画速度可调,使用也很简便。但今天听朋友谈起,才发现它有个小问题!
【通常使用】:通常将它与一个弹出式菜单关联,用它控制菜单的弹出,这也是它的主要功能,用一个ImageList控件来存放它所使用的图片
- 分类:编程语言 查阅全文
- GP与OOP, 我的想法
- to Sna_Daniel et al:你所说的“实现”是不是is-implemented-in-terms-of?希望不是。因为这跟Java里implements关键字正好相反。前者是实现继承(组合),后者是接口继承。你也知道,Java的接口等价与C++中的纯虚抽象类,为了避免引入多继承,Java使用这个概念来表达is-a关系。当然extends也是is-a关系,但是具有实现继承的意味。Java
- 分类:编程语言 查阅全文
- BCB:TEdit控件右对齐的简单实现
- 实现“编辑框”右对齐------------------------------------------------ 应用:通常作为输入数值用。 实现:用Memo元件实现。它具有右对齐属性。-------------------------------
- 分类:编程语言 查阅全文
- 玩转BCB的IDE,体验ToolsAPI
- 大多数BCB程序员也许一辈子都不用关心Toolsapi,但如果象我一样无聊的话,不妨玩玩和讨论一下:看看下面的程序,来把IDE变个样:
--->BCB5。0//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstopUSER
- 分类:编程语言 查阅全文
- More Effective C++ 条款23
- 条款23:考虑变更程序库
程序库的设计就是一个折衷的过程。理想的程序库应该是短小的、快速的、强大的、灵活的、可扩展的、直观的、普遍适用的、具有良好的支持、没有使用约束、没有错误的。这也是不存在的。为尺寸和速度而进行优化的程序库一般不能被移植。具有大量功能的的程序库不会具有直观性。没有错误的程序库在使用范围上会有限制。真实的世界里,你不能拥有每一件东西,总得有付出。
不同的设计者给这些条件赋予了
- 分类:编程语言 查阅全文