【C++】Item18. Make interfaces easy to use correctly and hard to use incorrectly
2024-10-19 23:25:48
接口容易被正确使用,不易被误用
c++简单工厂模式时,初级实现为ITest* CreateTestOld(), 然后用户负责释放返回的对象。如果忘记释放就会造成memory leak,所以在设计工厂接口时就应屏蔽这个潜在的问题,这时就可以用智能指针shared_ptr<ITest> CreateTest(),由他负责对象资源的管理,而对客户端的使用来说更简洁了。
#include "stdafx.h"
#include <memory>
#include <iostream>
using namespace std; class ITest
{
public:
virtual void Func() = ;
virtual ~ITest(){}
}; class Test : public ITest
{
public:
void Func() override
{
cout << "Test::Func" << endl;
}
Test()
{
cout << "Test ctor!" << endl;
}
~Test()
{
cout << "Test destroy!" << endl;
} }; class Factory
{
public:
static shared_ptr<ITest> CreateTest()
{
return shared_ptr<ITest>(new Test);
} static ITest* CreateTestOld()
{
return new Test;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
auto ptr2 = Factory::CreateTestOld();
ptr2->Func();
delete ptr2; auto ptr = Factory::CreateTest();
ptr->Func(); return ;
}
最新文章
- git push :推送本地更改到远程仓库的三种模式
- C 不改变顺序,原址剔除数组中的0元素
- (转)word2vec前世今生
- Eclipse配置信息
- Java用DOM操作xml
- 【待解决】编译V8引擎出错-snapshot.cc
- big_table练习数据表
- 日志管理-NLog日志框架简写用法
- javascript第十四课,方法的扩展prototype
- ITIL该研究的结论(互联网思维的结合)
- webBrowser.execWB的完整说明
- python 之 批量替换文件中文本后缀
- php中常用的字符串大小写转换函数实例解释
- STL -->; 高效使用STL
- ●BZOJ 1272 [BeiJingWc2008]Gate Of Babylon
- c#语言中的Process进程类型的使用示例
- pythonのsimple_tag
- 摘选改善Python程序的91个建议
- 底图与蒙版的过渡效果transition
- sqlServer 获取最新的一条数据