自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (5)
  • 收藏
  • 关注

翻译 Item13: Use objects to manage resources

假设我们使用一个用来建模投资行为(例如股票、债券等等)的程序库,其中各式各样的投资类型继承自一个root class Investment:class Investment { ... }; // root class of hierarchy of // investment types

2010-05-14 09:06:00 265

翻译 Chapter3: Resource Management

所谓资源就是,一旦用了它,将来必须还给系统。C++程序中最常使用的资源就是动态分配内存(如果你分配内存却从来不曾归还它,会导致内存泄露),但内存只是你必须管理的众多资源之一。其他常见的资源还包括文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字形和笔刷、数据库连接、以及网络sockets。不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。

2010-05-14 09:02:00 259

翻译 Item12: Copy all parts of an object

设计良好的面向对象系统(OO-systems)会将对象的内部封装起来,只留两个函数负责对象拷贝(复制),那就是copy构造函数和copy assignment操作符,我们称之为copying函数。 如果你声明自己的copying函数,意思就是告诉编译器你不喜欢缺省实现中的某些行为。编译器仿佛被冒犯似的,会以一种奇怪的方式回敬:当你的实现代码几乎必然出错时却不告诉你。 考虑一个cla

2010-05-14 08:39:00 440

翻译 Item11: Handle assignment to self in operator=

Widget& Widget::operator=(Widget rhs) // rhs is a copy of the object{ // passed in — note pass by val swap(rhs); // swap *th

2010-05-13 20:18:00 303

翻译 Item10: Have assignment operators return a reference to *this

 关于赋值,有趣的是你可以把它们写成连锁形式:int x, y, z;x = y = z = 15; // chain of assignments  同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为:x = (y = (z = 15));   15先赋值给z,然后其结果(更新后的z)再被赋值

2010-05-13 19:56:00 292

翻译 Item9: Never call virtual functions during construction or destruction

你不该在构造函数和析构函数期间调用virtual函数。 现有一个class,建模股市交易如买进、卖出的订单等。这样的交易一定要经过审计,所以每当创建一个交易对象,在审计日志(audit log)中也需要创建一笔适当记录,下面是一个看起来颇为合理的做法:class Transaction { // base class for

2010-05-13 16:47:00 358

翻译 Item8: Prevent exceptions from leaving destructors

C++并不禁止析构函数吐出异常。但不鼓励你这么做。这是有理由的:class Widget {public: ... ~Widget() { ... } // assume this might emit an exception};void doSomething(){ std::vector v; ...}

2010-05-13 16:06:00 266

翻译 Item7: Declare destructors virtual in polymorphic base classes

看一个计时类:class TimeKeeper {public: TimeKeeper(); ~TimeKeeper(); ...};class AtomicClock: public TimeKeeper { ... };class WaterClock: public TimeKeeper { ... };

2010-05-12 19:23:00 321 1

翻译 Item6:Explicitly disallow the use of compiler-generated functions you do not want.

如果你不想使用编译器自动生成的函数,就明确拒绝  一个描述待售房屋的class:class HomeForSale {...}; 由于任何一笔资产都是天上地下独一无二,没有二笔完全相像。因此为HomeForSale对象做一份副本有点没有道理。你怎么可以复制某些先天独一无二的东西呢?HomeForSale h1;HomeForSale h2;HomeForSale h3(

2010-05-11 22:07:00 379 1

翻译 Item5: Know what functions C++ silently writes and calls

什么时候一个空类(empty class)不再是一个空类(empty class)呢?当C++处理过它之后。如果你自己不声明,编译器就会为你声明(一个编译器版本)的一个copy constructor、一个copy assignment操作符、一个析构函数。此外,如果你没有声明任何构造函数(constructor),编译器还会为你生成一个默认构造函数(default constructor)。所有

2010-05-11 14:41:00 263

翻译 Chapter2. Constructors, Destructors, and Assignment Operators

几乎你写的每一个class都会有一个或多个构造函数、一个析构函数、一个copy assignment操作符。

2010-05-11 14:37:00 233

翻译 Item4: Make sure that objects are initialized before they're used

于初始化对象的值,C++似乎反复无常。如果你这么写 int x; 在某些语境下,x会被初始化为0,但其他语境中却不保证。如果你这么写class Point { int x, y;};...Point p; p的成员变量有时候被初始化为0,有时候不会。      现在,我们终于有一些规则,描述“对象的初始化动作何时一定发生,何时不一定发生”。不

2010-05-07 14:11:00 290

翻译 Item3: Use const whenever possible

      使用const允许你指定一个语义限制---特定的对象不允许被修改---编译器会强制这项约束。它允许你告诉编译器或其他编码人员某个值应该保持不变。       关键字const是多才多艺的。你可以用它在class外修饰global或namespace scope作用域内的常量,或者修饰文件、函数、区块作用域中被声明为static的对象。你也可以修饰class内部的static和n

2010-05-06 09:34:00 411

翻译 Effective C++ Item 2:Prefer constS, enumS, and inlineS to #defineS

这个条款叫“喜欢编译器胜过预处理器”更贴切。因为#define不被视为语言的一部分。当你这样写时, #define ASPECT_RATIO 1.653 符号名ASPECT_RATIO对于编译器来讲是不可见的;在源程序到达编译器之前,ASPECT_RATIO很可能被预处理器删除了。所以,ASPECT_RATIO符号名也许压根就没有进入符号表。这就会使你很困惑了,特别编译过程中涉

2010-05-05 15:37:00 412

Digital_image_warping 数字图像卷绕

Digital Image warping 数字图像卷绕,George Wolberg写的,好像很有名。

2009-12-29

国际大学生程序设计竞赛例题解 搜索,数论,图论(一)

国际大学生程序设计竞赛例题解赛试题(一)

2008-09-26

国际大学生程序设计竞赛例题解 广东省大学生程序设计竞赛试题(二)(2003年-2005年)

国际大学生程序设计竞赛例题解 广东省大学生程序设计竞赛试题(二)(2003年-2005年)

2008-09-26

[上海交大系列3][网络安全]课件

上海交通大学系列3的网络安全课件。。讲稿。

2008-09-12

Jsp+Oracle组建动态网站经典实例

Jsp+Oracle组建动态网站经典实例

2008-09-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除