本次更新不会修改版本。
考虑到FileReader和FileWriter并没有复制构造的需求,因此我在代码中严格删除了拷贝构造函数和拷贝赋值重载函数,并定义了移动构造函数和移动赋值重载函数。这一更改使得一个文件句柄始终只被一个FileReader或FileWriter所控制,增强了文件安全性。
此外,FileReader和FileWriter的close()方法的具体职能也被我修改了,与此一并改动的还有析构函数。
在目前的设计中,一个文件会随着FileReader或FileWriter的析构而关闭。或者开发者可以通过调用close()方法来提前关闭文件。
在调用析构函数或者close()函数时,FileReader或FileWriter需要检查该文件是否已经被关闭,如果被关闭则不做任何处理——即多次调用close()方法不会产生任何问题,且调用close()后的析构函数也能被正常调用且不产生任何问题。
我注意到EasySmartPtr这个命名篇幅过长,因此我把它重命名为SmartPtr,所有有关的代码都已被修改且通过编译运行测试。