面向对象的设计(5)

<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

头文件IntArrayRC中含有IntArrayRC 的定义,以及在类定义之外定义的全部内联成员

函数的定义。如果我们定义了非内联函数,则把它们放在IntArrayRC.C——这个相关联的程

序文本文件中

下面这个小程序实现了IntArray 与IntArrayRC 两个类的层次结构

#include <iostream>

#include <IntArray.h>

#include <IntArrayRC.h>

extern void swap(IntArray&,int,int);

int main()

{

int array[ 4 ] = { 0, 1, 2, 3 };

IntArray ia1( array, 4 );

IntArrayRC ia2( array, 4 );

// 错误一位偏移off-by-one 应该是size-1

// IntArray 对象捕捉不到这个错误

cout << "swap() with IntArray ia1\n";

swap( ia1, 1, ia1.size() );

// ok: IntArrayRC 对象可以捕捉到这样的错误

cout << "swap() with IntArrayRC ia2\n";

swap( ia2, 1, ia2.size() );

return 0;

}

编译并执行这个程序产生如下结果

swap() with IntArray ia1

swap() with IntArrayRC ia2

Assertion failed: index >= 0 && index < size

C++支持另外两种形式的继承:多继承(multiple inheritance 也译多重继承,也就是

一个类可以从两个或多个基类派生而来)以及虚拟继承(virtual inheritance)。在这种继承方

式下,基类的单个实例在多个派生类之间共享。第18 章将讨论这些内容,面向对象程序设计的

另一个较为深入的方面是在程序执行过程中,任意一个点上我们都能够查询某类的引用或

指针所指向的实际类型。这是由RTTI 运行时刻类型识别设施提供的。我们将在19.1 节

中讨论它。

你可能感兴趣的:(C++,c,C#)