类初始化

类对象数组:

1. Account table[8];

2.用构造函数初始化数组(必须定义该类型相应的的构造函数)

Account table[8]=

 {      Account(...),

        Account(...),

       Account(...),

       ............

}

3.

Account pooh_pols[3] = {
Account( "Woozle", 10.0 ),
Account( "Heffalump", 10.0 )
};
    即数组初始化表被依次应用到数组的相继元素上对于那些没有显式构造函数实参集
合的元素用类的缺省构造函数初始化如果该类没有定义缺省构造函数则初始化表必须
为数组的每个元素提供构造函数实参


类成员初始化:

类成员的初始化显示仅在成员初始化表中,在其他地方叫做赋值。

多态:

当我们在C++中说到多态性时我们主要指基类的指针或引用可以指向其任意派生类的能力。

C++语言以下列几种方式支持多态性
1 通过一个隐式转换从派生类指针或引用转换到其公有基类类型的指针或引用
Query *pquery = new NameQuery( "Glass" );
2 通过虚拟函数机制
pquery->eval();
3 通过dynamic_cast 和typeid 操作符将在19.1 节详细讨论
if ( NameQuery *pnq =
dynamic_cast< NameQuery* >( pquery )) ...

我们通过把AndQuery NotQuery 和OrQuery 类型的每个操作数定义为Query*的指针
来解决我们的操作数表示问题例如
class AndQuery {
public:
// ...
private:
Query *_lop;
Query *_rop;
};
这两个操作数现在都可以指向从抽象Query 基类派生的任何类型的查询类类型无
论是现在已经定义的还是将来要定义的由于虚拟机制发生在程序执行期间的每个操作数
的计算过程与它的实际类型无关
_rop->eval();


在派生表中指定的类必须首先被定义好方可被指定为基类例如下面的Query 的前
向声明不足以使其被用作基类
// 错误: Query 必须已经被定义
class Query;
class NameQuery : public Query { ... };


面向对象设计的主要形式是一个抽象基类的定义以及它的公有派生类。

对于抽象基类,它并不做什么具体工作,一般来讲,我们只是使用抽象基类的指针和引用操作其派生类对象。(与抽象基类相对应的还有实体基类。)





















评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值