数据结构和算法分享专题数据结构和算法分析

12_顶层父类的创建

2018-01-21  本文已影响4人  编程半岛

关键字:顶层父类、单一继承树、Object类的定义与实现

1. 当代软件架构实践中的经验

当用C++语言开发一个面向对象的系统时,不要使用多继承,使用单重继承实现多个接口的方式进行系统设计。重点强调可以使用多个接口,但是继承只能是一对一的继承,不要实现多重继承。

实现方式:创建一个顶层的抽象父类

2. 不幸的事实

如:new操作失败会发生什么?
在早期的编译器中,new操作失败会返回一个空指针;
在现代的编译器中,new操作失败会抛出一个异常。

3. 创建DTLib::Object类的意义

4. 顶层父类的接口定义

class Object
{
public:
    void* operator new (unsigned int size) throw(); // throw()表示当前的函数不会抛出任何异常
    void operator delete (void* p);
    void* operator new[] (unsigned int size) throw();
    void operator delete[] (void* p);
    virtual ~Object() = 0;
};

5. 顶层父类的实现

Object.h

#ifndef OBJECT_H
#define OBJECT_H

namespace DTLib
{

class Object
{
public:
    void* operator new (unsigned int size) throw(); // throw()表示当前的函数不会抛出任何异常
    void operator delete (void* p);
    void* operator new[] (unsigned int size) throw();
    void operator delete[] (void* p);
    virtual ~Object() = 0;
};

void* Object::operator new (unsigned int size) throw()
{
    return malloc(size);
}

void Object::operator delete (void* p)
{
    free(p);
}

void* Object::operator new[] (unsigned int size) throw()
{
    return malloc(size);
}

void Object::operator delete[] (void* p)
{
    free(p);
}

Object::~Object()
{

}

}

#endif // OBJECT_H

6. 小结

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

上一篇 下一篇

猜你喜欢

热点阅读