首页 > 技术文章 > 博览网C++学习第二周

y990441 2017-10-23 20:53 原文

       本周仍然是基本的class设计,只是内含指针(资源)

       对于这种class需要用构造/析构函数做RAII。并且要处理该class的

复制控制(拷贝构造和operator=)要么禁止复制,要么深拷贝,要么

引用计数等等。。。用Big Three来管理资源实现“自动”的内存管理是很

好的。

       其实,把这个概念一般化,可以把指针抽象成一个class,实现自己的

资源管理,成为智能指针。为什么有了shared_ptr,等智能指针还要自己写

智能指针(或者叫句柄?)因为我们有自己的需求啊,每个程序都有自己

与众不同的地方,比如写时复制啊,析构时用一些特殊的方式释放资源啊

等等。

       吐槽一下作业的题目,能出得用心一些吗?为了让类有一个指针数据,

直接把Point类型的数据成员变成Point*的指针成员,能不能稍微含蓄一些?

比如你用Pimp手法写成:

class Rectangle {
public:
  //your code
private:
  struct  Rectangle_Impl;
  Rectangle_Impl* pImpl;   
};

这样不是也含有指针成员了吗?而且还使class的界面和实现彻底分离,大大降低了文件间的编译依赖性。

推荐阅读