面向对象——意图与逻辑 (二)

来源:互联网 发布:网络运营商区别 编辑:程序博客网 时间:2024/06/06 07:01

面向对象——意图与逻辑
面向对象——意图与逻辑 (二)
面向对象——意图与逻辑(三)
面向对象——意图与逻辑(四)

  • (1)静态成员(变量或函数)——为类所有
  • (2)构造函数——用于实例化具体的对象

“成员变量继承”与”成员方法继承”

这一条补充上篇博客。

一个类内部没有被 virtual 关键字修饰的成员函数,该类可不可以作为继承关系中的基类,答案是可以的。因为除了“成员方法继承”之外,继承关系中的类也可以进行”成员变量的继承”(如果该成员变量为 private 的话,那就是继承先关对成员变量的访问 access 和修改modify函数),然后在子类中实现另外一些自己的函数。

也即:有被 virtual 关键字修饰的函数,一定用于继承关系,实现多态;没有被 virtual 关键字修饰的函数,未必不可作为继承关系中的基类,因除了“成员方法继承”(通过virtual关键字),还有“成员变量继承”。

为什么静态成员变量在类外定义时,不需要加static关键字修饰

首先一点,能在类外定义的成员变量一定是静态的。
再加static关键字的话,就是多此一举。

父类 vs 子类

  • 低层次的抽象:代表父类
  • 高层次的抽象:代表子类

为什么不可在派生类构造函数的初始化参数列表处初始化基类的成员

类构造函数的初始化列表分为两部分:

  • (1)非静态数据成员
  • (2)基类的构造

为了实现一种分工的明确性,而不引起混乱,对于类构造的初始化参数列表:基类的构造就去初始化基类自己的,自然非静态的数据成员就只能为当前派生类所独有的。

所以,以上的说明只是对于类构造的初始化参数列表,在类构造的函数体内可对基类的成员做各种访问。

0 0