August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
complex和Vector这样的类型称为具体类型(concrete type),这是因为它们的表示属于定义的一部分。在这一点上,它们与内置类型很相似。相反,抽象类型(abstract type)将使用者与类的实现细节完全隔离开来。为此,我们将接口与表示分离开来,并且放弃了纯局部变量。由于我们对抽象类型的表示一无所知(甚至对其大小也不了解),所以必须从自由存储(参见4.2.2节)分配对象,然后通过引用或指针(参见1.7节、13.2.1节)访问对象。
首先,我们为Container类定义接口,这是一个比Vector更抽象的版本:
这个类是一个纯接口,是为稍后定义的特定容器设计的接口。关键字virtual的意思是“可能随后在派生类中被重新定义”。不出意料,我们将这种声明为virtual的函数称为虚函数(virtual function)。Container类的派生类应为Container接口提供具体实现。语法=0看起来有点奇怪,它说明函数是纯虚函数(pure virtual),即,Container的派生类必须定义这个函数。因此,我们不可能定义一个Container对象。例如:
Container只是作为接口出现,为具体实现operator[]()和size()函数的类提供接口。包含纯虚函数的类称为抽象类(abstract ...
Read now
Unlock full access