自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Minstrel Boy

~H.D.~对技术的追求永无止境~拒绝浮躁

  • 博客(18)
  • 收藏
  • 关注

原创 vc2005的back_insert_iterator问题:

  最近在看C++标准程序库的时候,发现书上的一段代码在vc2005中发生runtime error,代码段如下:    vector vecInt; for ( int i = 0; i     {       vecInt.push_back( i );    } vecInt.reserve( vecInt.size() * 2); copy( vecInt.begin(), vec

2009-07-30 17:31:00 1359

原创 Effective C++笔记: 实现(二)

 Item 29: 争取异常安全(exception-safe)的代码假设我们有一个类,代表带有背景图像的 GUI 菜单。这个类被设计成在多线程环境中使用,所以它有一个用于并行控制(concurrency control)的互斥体(mutex):class PrettyMenu {public:  ...  void changeBackground(std::istream& img

2009-07-21 11:13:00 610

原创 Effective C++笔记: 实现(一)

 Item 26: 只要有可能就推迟变量定义 “只要有可能(as long as possible)”的含义:你不仅应该推迟一个变量的定义直到你不得不用它之前的最后一刻,而且应该试图推迟它的定义直到你得到了它的初始化参数。通过这样的做法,你可以避免构造和析构无用对象,而且还可以避免不必要的缺省构造。更进一步,通过在它们的含义已经非常明确的上下文中初始化它们,有助于对变量的作用文档化。 

2009-07-21 11:11:00 572

原创 Effective C++笔记: 继承和面向对象设计(四)

 Item 40: 谨慎使用 multiple inheritance(多继承)multiple inheritance(多继承)意味着从多于一个的 base class(基类)继承, 可能会导致较多的歧义。成员函数歧义:class BorrowableItem {             // something a library lets you borrowpublic: 

2009-07-17 18:04:00 587

原创 Effective C++笔记: 继承和面向对象设计(三)

 Item 38: 通过 composition(复合)塑模出 "has-a"或 "is-implemented-in-terms-of"(根据某物实现出)composition(复合)是类型之间的一种关系,表示某种类型的对象内含其他类型的对象。例如:class Address { ... };             // where someone livesclass Pho

2009-07-17 18:02:00 1088

原创 Effective C++笔记: 继承和面向对象设计(二)

 Item 34: 区分 inheritance of interface(接口继承)和 inheritance of implementation(实现继承)Public继承由2部分组成: inheritance of function interfaces(函数接口的继承)和 inheritance of function implementations(函数实现的继承)。 B

2009-07-17 18:01:00 597

原创 Effective C++笔记: 继承和面向对象设计(一)

 Item 32: 确保你的public inheritance 塑模出 "is-a"关系如果你写了一个 class D ("Derived") 从 class B ("Base") 公开继承,你就是在告诉 C++ 编译器(以及你的代码的读者)每一个类型为 D 的对象也是一个类型为 B 的对象,但是反之则不然。你就是在说 B 描绘了一个比 D 更一般的概念,D 描述了一个比 B 更特殊的概

2009-07-17 17:57:00 617

原创 Effective C++笔记: 让自己习惯C++

 Item 1: 将 C++ 视为 federation of languages(语言联邦)不要将 C++ 视为一个由相关语言组成的联邦,而非单一的语言。在每一个特定的 sublanguage(子语言)中,它的特性趋向于直截了当,简单易记。但你从一个 sublanguage(子语言)转到另外一个,它的规则也许会发生变化。为了感受 C++,你必须将它的主要的 sublanguages(子语

2009-07-17 13:40:00 866

原创 Effective C++笔记: 设计与声明(四)

 Item 25: 考虑写出一个不抛出异常的 swap函数标准程序库中的swap行为:namespace std {  template          // typical implementation of std::swap;  void swap(T& a, T& b)         // swaps as and bs values  {    T temp(a)

2009-07-15 16:34:00 611

原创 Effective C++笔记: 设计与声明(三)

 Item 23: 用非成员非友元函数取代成员函数想象一个象征 web 浏览器的类。在大量的函数中,这样一个类也许会提供清空已下载成分的缓存。清空已访问 URLs 的历史,以及从系统移除所有 cookies 的功能:class WebBrowser {public:  ...  void clearCache();  void clearHistory();  void removeC

2009-07-15 16:33:00 532

原创 Effective C++笔记: 设计与声明(二)

 Item 21: 当你必须返回一个对象时,不要试图返回其引用一个函数创建一个新对象仅有两种方法:在栈上或者在堆上。 在栈上分配:栈上的生成物通过定义一个局部变量而生成。使用这个策略,你可以用这种方法试写 operator*:const Rational& operator*(const Rational& lhs,   // warning! bad code!     

2009-07-15 16:32:00 443

原创 Effective C++笔记: 设计与声明(一)

 Item 18: 使接口易于正确使用,不易被误用假设一个用来表现日期的class设计构造函数:class Date {public:  Date(int month, int day, int year);  ...};就可能发生以下错误:Date d(30, 3, 1995);     // Oops! Should be "3, 30" , not "30, 3"第二

2009-07-15 11:34:00 455

原创 Effective C++笔记: 资源管理(二)

 Item 16: 使用相同形式的 new 和 deletenew对应delete,new [] 对应 delete[]这个规则对于有 typedef 倾向的人也很值得注目,因为这意味着一个 typedef 的作者必须在文档中记录:当用 new 生成一个 typedef 类型的对象时,应该使用哪种形式的 delete。例如,考虑这个 typedef:typedef std::str

2009-07-10 18:36:00 452

原创 Effective C++笔记: 资源管理(一)

条款13:以对象来管理资源为了确保资源总能被释放,我们需要将资源放入一个类中,这个类的析构函数在控制流程离开其作用域的时候会自动释放资源。 std::auto_ptr:注意:当一个 auto_ptr 被销毁的时候,会自动删除它所指向的东西,所以不要让超过一个的 auto_ptr 指向同一个对象非常重要。如果发生了这种事情,那个对象就会被删除超过一次,而且会让你的程序通过捷径进入未定

2009-07-10 18:04:00 599

原创 Effective C++笔记: 构造/析构/赋值运算(二)

 条款08:别让异常逃离析构函数1.    最好不要在析构函数中抛出异常,如果一个析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不让异常跑出析构函数之外)或结束程序。 2.    如果客户需要对某个操作函数运行期间抛出的异常做出处理,那么class应该提供一个普通函数(而非析构函数)来执行该操作。 条款09:不要在构造和析构函数中调用virtual

2009-07-10 17:23:00 593

原创 Effective C++笔记: 构造/析构/赋值运算(一)

  条款05:Know what functions C++ silently writes and calls  1. 对一个空类,C++默认生成构造,析构,拷贝构造,和赋值(operate=)函数   2. 这些函数并不一定生成,而是在需要时,才会被编译器创建出来。    3. 默认的拷贝构造和赋值函数只能实现简单的拷贝,对引用或const成员变量需要自己实现拷贝构造和赋值

2009-07-08 22:23:00 595

转载 Template的偏特化

 今天被偏特化整了一把,网上一搜,才发现原来有这么一个东东,嗯嗯~记录之 C++类模板的三种特化 By SmartPtr(http://www.cppblog.com/SmartPtr/)   说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特

2009-07-07 18:44:00 1210

原创 码农也不好当啊~

   感慨一把·还是面馆实在

2009-07-07 18:42:00 452

空空如也

空空如也

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

TA关注的人

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