4006-998-758
3000+课程任你选择
C++ Under the Hood (C++ 底层揭密)
研发学院 C++ CRT C++ virtual functions 开课时间:2021-08-02
侯捷

台湾著名C++技术专家,两岸著名IT技术教育者,计算机图书作家/译者/书评人。深入了解企业一线实践,挖掘C++技术难点与要点,有多年的企业客户培训经验,其深度的技术剖析和丰富的案例教学,深受企业及c++开发者的广泛好评。擅长以容易理解的图片解析繁复的结构和过程,以深入浅出的方式阐述高深的技术与复杂的源代码。

30年经验于计算器技术之写作/翻译/授课,曾执教于元智大学、南京大学,现任同济大学软件学院客座教授。着有《深入浅出MFC》《STL源码剖析》《多型与虚拟》《无责任书评》等书,译有《Inside the C++ Object Model》《C++ Primer》《Effective C++》《More Effective C++》等书。


查看老师详情
课程内容

课程说明


令高阶C++ programmers更进一步理解C++ 幕后运作机制


课程特色


特别强调 "内核揭密 源码剖析",彻底理解 C++ 之启动与结束之种种背景运作、CRT (C Runtime Library) 扮演的重要角色、及 C++ virtual functions / polymorphism / dynamic binding 的幕后机制。本课程谈的是基础内核知识,对于高阶技术养成及通贯极有帮助。全部内容建立在源码级别 (source code level)。


课程对象


C++ 中高阶学员


课程大纲


  1. Startup Code 是什么?它们出现在哪里?可触摸吗?可修改吗?可利用吗? 

  2. C Runtime (CRT) 在 C++ 程序中扮演的重要角色

  3. 彻底理解 C++ programs 生前死后的每一个细节

  4. C++ programs 运行前 (before main)和退出后 (after exit) 的所有行为: mainCRTStartup, heapinit, ioinit, environment variables, argc & argv & envp, cinit, core of C Initialization, core of C++ Initialization, main(), secrets of exit. 

  5. 如何让程序在 main() 之前执行

  6. 为什么能够让程序在 main() 之前执行

  7. 如何让程序在 exit() 之后执行

  8. 为什么能够让程序在 exit() 之后执行

  9. main() 执行前的 CRT 小内存块 (small memory blocks) 分配和释放 (实例观测)

  10. global / static objects 的 ctors & dtors 的特殊性

  11. CRT malloc / free 行为综览和实例观察: cookies, debug headers, 16 headers, 64 groups (free lists), 32 regions, memory management, blocks merging (de-fragment).

  12. Debug Heap 的形成和实例观察

  13. CRT Reporting Functions

  14. virtual functions 能够神奇实现 OCP (Open-Closed Principle) 的原因

  15. virtual functions 背后如何运作 (关于 vptrs 和 vtbls)

  16. 何谓动态绑定 (dynamic binding)?编译形式为何?

  17. virtual functions 的两大应用形式:(1) Polymorphism (2) Template Method

返回上一级