本周仍然是基本的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的界面和实现彻底分离,大大降低了文件间的编译依赖性。