GeekBand C++ WEEK4

1. 对象模型
  1. 首先我们需要知道的是多态动态绑定,**虚函数 **其实讲的是同一件事情;
  2. c++ 编译器看到函数调用,会考虑静态绑定还是动态绑定;
  3. 动态绑定的条件:
  4. 必须是通过指针或引用来调用;
  5. 这个指针或引用是向上转型的 -- 派生类向基类的转换;
  6. 调用虚函数。
  7. 动态绑定过程:通过指针P,找到 vptr , 再找到 vtbl ,再从里面看看指向哪个函数。可以看下面老师这张图片来理解:
理解动态绑定
  1. 具体实例可以看 Template Method 的实现过程。
2. 对 new,delete 的补充说明--我的笔记基本都是关于语法内容的
  1. 重载的原因:需要自定义内存分配的细节,需要重载new和delete运算符以控制内存分配的过程。
  2. 当自定义了全局的operator new 和 operator delete 函数后,我们就担负了控制内存分配的职责。
  3. 我们可以使用作用域运算符令new表达式或delete表达式忽略定义在类中的函数,直接执行全局作用域中的版本。
  4. 对于operator new函数或者 operator new[] 函数来说,他的返回类型必须是void* ,第一个形参的类型必须是size_t 且该形参不能含有默认实参。
  5. 对于operator delete函数或者 operator delete[] 函数来说,他的返回类型必须是void ,第一个形参的类型必须是void*。

注: 本周笔记内容较少,主要是一些内容的补充。

推荐阅读更多精彩内容