嗯学英文Object-oriented programming with ansci-c

Chapter 4

C结构体的储存结构取决于结构体定义中成员的排列顺序,柔性数组必须排列在最后。父类的内存应放在子类的最前面,以保证类型的向上转换后的内存访问是合法的。

类的标识符以及能被重写的函数都写在class结构体里面,但是无法适用于多种类型的继承

只有构造器逐层向上构造各子类延伸部分时会调用同层函数,即使这个函数会被下层子类继承并重写

重写过程发生在new函数的一开始,因此这种调用可能无法实现。在本层构造器中应调用本层函数的原名而不是标识名。

基于信息隐藏原则,子类不应直接访问父类信息,父类应提供静态函数接口或者宏来提供访问(宏本身并不是完全安全的)

Chapter 6

classOfsizeOf的作用是进行错误检查后分别返回类描述和类大小。

seletor传入的参数是实例指针,作用是调用classOf返回的类描述中储存的多态函数并调用。


紫辰presentation大纲

1. 什么是OOP捏

  • oop的特性(多态,继承……)
  • 数据结构的定义
  • 老生常谈的编程原则

2. 类结构组织的语言特性基础

  • C的结构体——一块泛化的连续内存组织
  • 简单的类实现
  • 文件组织(对调用者可见的接口声明文件.h,实现文件.c,仅对库内部可见的定义和实现.r)

3. 继承和多态的初步实现

  • 基类object的继承:内存平移,指针类型转换
  • 资源占有的两种方式:继承和聚合
  • 虚函数的继承和重写:类描述的引入,选择器的实现和指针的覆写
  • new/delete静态函数,ctor/dtor动态函数

4. 类继承和类描述的组织

  • 基础class和object类
  • metaclass的概念
  • class的继承和metaclass的特化
  • 基础两个类的初始化

5. 其他特性的实现

  • 框架化:预处理器
  • 自动类的初始化
  • 异常处理

6. 杂谈

  • 汇编实现oop
  • 和c艹效率对比

需补充(?回顾)的c知识

  • 可变参数列表(对比C++的形参包)
  • struct的组织形式,柔性数组
  • c的异常处理机制