clion + g++
当代软件架构实践中的经验
(1). 尽量使用单重继承的方式进行系统设计
(2). 尽量保持系统之只存在单一的继承树
(3). 尽量使用组合关系替代继承关系
遵循经典设计准则,所有数据结构都继承自Object类
定义动态内存申请行为,提高代码的移植性(避免不同编译器对于动态内存申请失败返回结果不同的处理)
Object.h
- #ifndef OBJECT_H
- #define OBJECT_H
- #include
-
- // Object
- namespace DTLib {
- class Object {
- public:
- void *operator new(std::size_t) throw();
- void operator delete(void *p);
- void *operator new[](std::size_t) throw();
- void operator delete[](void *p);
- virtual ~Object() = 0;
- };
- } // namespace DTLib
-
-
- #endif //TEST_OBJECT_H
Object.cpp
- #include "Object.h"
- #include
- #include
-
- using namespace std;
- namespace DTLib {
- void *Object::operator new(std::size_t size) throw() {
- cout << "Object::operator new" << size << endl;
- return malloc(size);
- }
-
- void Object::operator delete(void *p) {
- cout << "Object::operator delete" << p << endl;
- free(p);
- }
-
- void *Object::operator new[](std::size_t size) throw() {
- return malloc(size);
- }
-
- void Object::operator delete[](void *p) {
- free(p);
- }
-
- Object::~Object() {
- }
- } // namespace DTLib
Object类是DTLib种数据结构类的顶层父类
Object类用于统一动态内存申请的行为
在堆中创建Object子类的对象,失败时返回NULL值
Object类为纯虚父类,所有子类都能进行动态类型识别
喝水不忘挖井人: 更多内容请搜索狄泰软件学院(淘宝/B站)