C++接口的设计——析构函数
来源:互联网 发布:财务审批流程软件 编辑:程序博客网 时间:2024/06/06 18:14
接口不应该有实体函数,即接口的所有函数都应该是公共的纯虚函数。不过析构函数应该不应该是纯虚函数呢?如果是非纯虚的虚函数,那函数体要写什么呢?答案是什么都不写,内容为空的函数很不简洁,不爽。那就设置成纯虚函数,很遗憾,编译通不过,因为子类会调用父类的析构函数,父类析构函数指针不应该为空。那就考虑设置成普通函数吧,还可以省去声明,因为C++默认实现析构函数!一个显而易见的问题,当delete接口时只是调用了接口的析构函数,并不能正确地调用子类的析构函数。由此看来,还是应该采用第一种的非纯虚的虚函数形式。但是,仔细想一想,我们是否需要delete一个接口,我们真的需要delete一个接口吗?这个答案并不是那么显而易见。一个接口对象最开始产生的地方必定是根据具体的类名产生的,如果我们遵循一个原则:谁产生,谁释放。这样在对象产生的地方不以接口指针存放,删除的时候也当然不以接口指针删除,析构可以正常。而其它使用对象的地方,可以以接口指针引用。这样做的好处是使对象指针的管理清晰了,如果当前模块引用的是接口指针或者说接口指针不包含虚析构函数,我们就不应该delete此指针。
- C++接口的设计——析构函数
- C++接口的设计——析构函数
- C语言——接口设计原则
- C 的本质 函数接口
- C语言的本质(15)——C语言的函数接口入门
- 接口的设计(让类被正确的使用)——《Effective c++》
- c语言的sqlite3接口的设计
- C++:类的设计————构造与析构函数及其动态内存管理
- 一个 C 接口设计的问题
- 一个 C 接口设计的问题
- C语言的设计模式-接口隔离
- C语言的本质(16)——函数接口的传入参数与传出参数
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- mysql的c函数接口以及c++接口的对比
- SQLite与C语言的函数接口
- sqlite3常用的c语言函数接口
- 数据库:SQlite3的C接口相关函数
- 接口是没有析构函数的
- Accelerated C++ Exercise 4-1
- hdu 4705 Y
- java 下载图片
- 注册算法的分析
- win7下sqlserver 2000安装补丁
- C++接口的设计——析构函数
- WebService部署时“需要ORACLE客户端软件8.1.7或更高版本”等问题的解决
- 封装获取MAP
- Android基础之Adapter
- 切分一个大文件并分装成Excel文件
- OCP-1Z0-052-V8.02-135题
- 安装与配置JSTL
- 分类栏目Thinkphp实现无限极分类
- 关于快速分享代码和分享指定的程序的代码,如分享到新浪微博