C++面向对象高级编程(下) Week 2 (Boolan) b

2017-08-10  本文已影响0人  Im4lish

1-对象模型:关于vptr和vtbl
无论类中有多少个虚函数,只有一个vptr,vptr指向vtbl,vtbl不占用对象空间。
vtbl可视为一个数组,vtbl中储存着虚函数的指针。
2-对象模型:关于this
this指针是每个成员函数的隐藏参数。
3-对象模型:关于Dynamic Binding
pa->vfunc1()等价于(*(p->vptr)[n])(p)或者(* p->vptr[n])(p)
4-谈谈const
1、const member function

return_type funcname cosnt (parameters)
{
      //保证不修改成员变量
      //在某些情况下,若return_type为引用且返回的为成员变量,则可能导致成员变量,使得const修饰符失效
}

2、const object

const object与const member function
当函数的const与non-const版本同时存在时,const object只会调用const版本,non-const object只会调用non-const版本
5-关于New,Delete
Xxx* x = new Xxx()中的new为表达式,其不可改变,而对new的重载,则是该表达式经编译器转化为
void* mem = operator new(sizeof(Xxx));
x = static_cast<Xxx*>mem;
x->Xxx::Xxx();

中的operator new。delete与new相似。
new操作符在C++中,实际上是通过malloc函数来实现。delete操作符则是通过free函数实现。
6-重载Operator new,Operator delete
size_z是在重载new操作符时所规定的第一个参数,不必传入,是重载函数的规定。
7-示例
8-重载new[],delete[]示例
9-Basic_String使用new(extra)扩充申请量

上一篇下一篇

猜你喜欢

热点阅读