<<程序员面试宝典>>读书笔记 4

针对继承方面的知识点在进行简单的总结:

1.公有继承方式
基类成员对其对象的可见性,公有成员可见而其他成员均不可见。
基类成员对其派生类可见性,基类的公有成员和保护成员可见,私有不可见。
基类成员对其派生类对象的可见性,基类公有成员可见。
2.私有继承方式
基类成员对其对象的可见性,公有成员可见而其他成员均不可见。
基类成员对其派生类可见性,基类的公有成员和保护成员可见,私有不可见。基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类访问,这意味着将无法继承下去。
基类成员对其派生类对象的可见性,均不可见。
3.保护继承方式
基类成员对其对象的可见性,公有成员可见而其他成员均不可见。
基类成员对其派生类可见性,基类的公有成员和保护成员可见,私有不可见。基类的公有成员和保护成员都作为派生类的保护成员,并且不能被这个派生类的子类访问。
基类成员对其派生类对象的可见性,均不可见。
4.虚继承与继承的差异
假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;
假设derived 虚继承自base类,那么derivd与base是一种“has a”的关系,即derived类有一个指向base类的vptr。

  1. 什么是虚继承?

    虚拟继承是多重继承特有的概念。假设类d继承自b和c,而bc都继承自a,则在累d中会出现两个a。为了节省内存空间可以将b,c对a的继承定义为虚拟继承,而a就成了虚拟基类。

  2. 什么是com?

    Components object model是软件互相通信的一种方式,它是一种二进制和网络标准,允许任意两个组件互相通信而不管他们是在同一个操作系统还是什么计算机允许的,或是组件用什么语言编写的。
    首先com是基于对象的,com对象被很好的封装起来我们可以通过它的接口来访问com对象里面的方法,简单地说,编程难度降低程序员不需事无巨细的开发所有组件模块,实现分层次,软件的复用率提高。
    com对象必须实现lunknown接口,这个接口是管理com对象生命周期的。qi即查询接口,不同的接口实现不同的方法,一个接口转向另一个接口过程就是qi。guids每个组件独一无二的身份,com组件必须注册后才能使用。
    当然com组件也有着致命的缺陷,由于它的重用性,com对象的实现可以升级,如果两个程序都使用一个com对象,如果这个com组件升级了,很有可能出现某个程序无法使用新组件的情况,这被称为dll灾难。

  3. print函数只是单纯的从内存中读出数据,并不会进行类型转换, printf(“%d”,5.01)和printf(“%f”,5)的输出结果就是一种例子,5为整型在内存中为16位或32位,而%f为double型为64位,这就会导致越界访问,读入了好多静态存储区的0,所以结果就是0.00000,同样的%d为整型只读64位的低32位,所以第一个结果是一个很大的数。

你可能感兴趣的:(<<程序员面试宝典>>读书笔记 4)