2023-5-7-OOCPC学习笔记
嗯学英文Object-oriented programming with ansci-c
Chapter 4
C结构体的储存结构取决于结构体定义中成员的排列顺序,柔性数组必须排列在最后。父类的内存应放在子类的最前面,以保证类型的向上转换后的内存访问是合法的。
类的标识符以及能被重写的函数都写在class结构体里面,但是无法适用于多种类型的继承
只有构造器逐层向上构造各子类延伸部分时会调用同层函数,即使这个函数会被下层子类继承并重写
重写过程发生在new函数的一开始,因此这种调用可能无法实现。在本层构造器中应调用本层函数的原名而不是标识名。
基于信息隐藏原则,子类不应直接访问父类信息,父类应提供静态函数接口或者宏来提供访问(宏本身并不是完全安全的)
Chapter 6
classOf
和sizeOf
的作用是进行错误检查后分别返回类描述和类大小。
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的异常处理机制
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Blognotus!
评论