C++ primer 5th :第15章面向对象程序设计

来源:互联网 发布:淘宝买家注册流程 编辑:程序博客网 时间:2024/06/05 09:31

15.2.3

1:关于基类的static type和dynamic type(我:这应该就是dynamic binding实现的方法)

首先,基本概念是,这里的static type与声明一个变量是static是两件不同的事。


进一步。如果一个expression(主要指base class)is neither a reference nor a pointer,那么就不存在dynamic binding的机会,因为它的static type和dynamic type总是一样的。(例如,在一个使用Quote基类的地方就只能使用Quote类,不能使用它的继承类;但是,在一个使用Quote&的地方,可以使用Quote的继承类)


最后。一个reference或pointer的expression,它的static type是明确的,但是它的dynamic type是与传入的类型的参数一致的(但传入的参数须是基类的继承类)。

(如一个Quote&的参数,它的static type是Quote&。

如果传入的参数是Quote object,其dynamic type还是Quote&,此时static type和dynamic type一致;

但是如果传入的参数是Bulk_quote的object,那么这个参数的dynamic type就与static type不一样了


2.(the C++ programming language的摘抄)

12.2.6节:概念

1)在虚函数的第一个声明所在的类里,“必须”要提供定义(除非它被声明为纯虚函数);

2)关键字virtual就像指明一个界面,既要服务本类中的这个函数,也要服务由它派生出类里对应的函数;

3)Employee派生类的对象也应看做Employee的对象

4)用好虚函数,即使在没有考虑到后面会派生出什么类的时候也可以在user-code里使用虚函数(后面不用改变user-code),这是类机制中最关键的一个方面  ==》 只要用得好,就成为了面向对象程序设计的基石,并能够为一个不断演化的程序提供一个方面的稳定性。

5)要在C++中取得多态性的行为,有两个方面:调用的函数就必须是虚函数;而对象必须是通过指针或引用去操作的

6)抽象类




0 0
原创粉丝点击