class
base{
private:
int
a;
protected:
int
b;
public:
int
c;
};
class
sub1:public
base
{…};
class
sub2:private
base{…};
说明在 base,sub1,sub2 中所能取用的 data members 各为何.并指
出 这 些 data members 的 access mode(private, protected 或
public).
Answer:
class
data
members
access
mode
base
a
private
b
protected
c
public
sub1
b
protected
c
public
sub2
b
private
c
private
四
、
虚
函
数
和
抽
象
类
多
态
(polymorphism)
面向对象程设计的核心观念之一就是多态--它使一群类似的行为的同
名称的方法, 但各对象可依适合自己所需的方式建构此同名动作的实
行 细 节 , C++ 多 态 的 关 键 在 于 所 谓 的 虚 函 数 这 一 类 的 函 数 。
虚
函
数
(virtual
function)
透过虚拟函数, 衍生类可重新定义基类的成员函数, 若想在 C++程式
中建立虚拟函数(然後才能实行多态), 只需利用 virtual 关键字声明函
数
即
可
(
如
下
所
示
)
virtual
void
Display();
虚
函
数
的
用
处
针对共享相同基类的那些对象, 可有较一致的使用态度, 例如, 你可能
定义一个名为 Shape 且带有一个 Draw 虚拟成员函数的基类, 然后从
它派生了 Circle 类和 Square 类, 而且它们各自带有自己的 Draw 成
员函数.从这些类派生建立的每个对象都可呼叫 Draw 成员函数; 但是
编译程式可确保各自应呼叫那个版本的 Draw 函数.是基类的还是派
生
类
的
。
一
个
例
子
重 要 观 念 : 指 向 父 类 的 指 针 也 可 用 来 指 向 子 类 别
#
include
iostream.h>