Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299115
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

分类: C/C++

2013-01-08 18:28:54

提供swap接口以便于交换两个对象,中间不要抛出异常。

提到了Pimpl,pointer to implementation,一种经常使用到的实现模式,减少耦合,减少由于头文件变动引发的不必要的重编译。

wiki上说的挺清楚:
有一个Book类,由于变动,新加入了m_Title成员。其对应的Book.h肯定要修改,那么对应包含了Book.h的所有文件都需要重新编译,即使关于Book对象他们只知道print接口,这是一个内部私有成员变动,外界不应该感知,引发了不必要的重新编译。

点击(此处)折叠或打开

  1. class Book {
  2. public:
  3. void print();
  4. private:
  5. std::string m_Contents;
  6. std::string m_Title;
  7.  }
我们将Book的内部实现放到一个BookImpl的新类中,不对外提供,Book类中只保留该类的指针(或使用智能指针等容器)。这样Book内部再有什么数据成员改动,客户也不会感知到。

点击(此处)折叠或打开

  1. class Book { 
  2. public:
  3. void print(); 
  4. private: 
  5. class BookImpl; 
  6. BookImpl* m_p; 
  7. };
  8. Book::Book() 
  9. {
  10.   m_p = new BookImpl(); 
  11. }

  12. void Book::print() 
  13. {
  14.   m_p->print(); 
  15. }

阅读(401) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~