类的分类

  1. 具体类
    将具体类作为基类一般无意义,是线程处理中多线程类的理想候选者(简单)
  2. 抽象类
    可以提供多个纯虚函数(真的需要,有意义),但是派生类要实现其定义
  3. 接口类
    接口:类用户可用的数据成员和成员函数(即public数据和函数)组成了该类的接口。
    接口类:用于修改或增强另一个类或类集合的接口,可以调整和完善接口,使其更易用。
    接口类例子:更改函数或数据成员名;更改数据类型、返回类型或参数列表等。应用:STL中的容器适配器。
    template <class Container>
    class stack {
    	friend bool operator==(const stack<Container>& x, const stack<Container>& y);
    	friend bool operator<(const stack<Container>& x, const stack<Container>& y);
    public:
    	typedef Container::value_type value_type;
    	typedef Container::value_type value_type;
    protected:
    	Container c;
    public:
    	bool empty() const { return c.empty(); }
    	size_type size() const { return c.size(); }
    	value_type& top() { return c.back(); }
    	void push(const value_type& x) { c.push_back(); }
    	void pop() { c.pop_back(); }
    };

    接口类继承或者包含该类,然后定义将要作出的调整。其中stack类为Container类的接口类,使Container类便于使用和维护,stack类通过调整类c提供的名字,让用户能使用更熟悉的操作名字。
    接口类也可以充当非成员函数的包装器,比如在线程处理、进程间通信和多任务处理中使用的操作系统基本要素。通过封装操作系统基本要素,为用户提供这些基本要素的一般性接口,使代码跨平台性的移植性更强,eg:

    // POSIX
    class mutex {
    protected:
    	pthread_mutex_lock X;
    public:
    	lock() { pthread_mutex_lock(&X); }
    	unlock() { pthread_mutex_unlock(&X); }
    };
    // OS/2
    class mutex {
    protected:
    	HMTX X;
    public:
    	lock() { DosRequesMutexSem(X,1000); }
    	unlock() { DosReleaseMutexSem(X); }
    };

    UNIX和OS/2操作系统下经过mutex类的包装,接口均变为了lock()和unlock()

  4. 节点类
    C++编程中最强大的类,是继承和多态的基础,与抽象类不同的是不包含纯虚函数,可以即时实例化。
    特点:可重用类,提供了可以在派生类中覆盖的虚成员函数。
    它使用基类的指针允许在后代类中操纵成员函数,节点类既可以是基类,也可以是派生类,为类层次提供了实质内容。

  5. 域类

  6. 支持/应用类
    可以跨域使用:1.共同的功能类    2.用户接口类

  7. 集合和容器类
    实现途径:

    1. 基于对象途径
      依赖于多态和继承,产生了高度纵向

    2. 基于模板途径

  8. 类库
    数学类库、用户接口类库、文件管理类库、内存管理类库、图形类库、应用类库、任务和协同程序类库、操作系统API类库、特定域类库。

猜你喜欢

转载自blog.csdn.net/vict_wang/article/details/85257741