Boolan面向对象下第二周笔记

一、虚指针(vptr)           虚表(vtbl)


Boolan面向对象下第二周笔记_第1张图片

vptr:

若类对象中含有虚函数,则在对象模型中会存在一根虚函数指针

vtbl:虚函数指针指向一块内存,称为虚表。可以将它理解为一种表格,每个表格的位置存放一个虚函数对应内存的地址;

二、关于this

通过this指针调用虚函数指针指向虚表中实际对应的虚函数。

举例理解:class类比作房子,this就好比一把钥匙,通过钥匙来打开了这座房子的门,那么里面的东西就随意你取用了。

his作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。

三、动态绑定

需要满足三个条件:
1.使用指针调用

2.存在向上转型

3.调用的是虚函数

四、const

表示此函数保证不更改data members。


Boolan面向对象下第二周笔记_第2张图片

由上图可以看到:

常量(const)对象可以调用const成员函数

const对象不可以调用non-const成员函数

非常量(non-const)对象可以调用const成员函数

non-const对象可以调用non-const成员函数

五、关于new 和 delete

1)全局的new/delete:

::operator new(), 

::operator delete(), 

如果重载全局的new和delete,将影响整个项目

2)类成员的new和delete

 如果没有定义成员new/delete,则调用全局的new/delete

如果定义了成员new/delete的类,可以使用::前缀强制调用全局new/delete

六、总结

这节课讲了较多概念性的东西,在整个c++学习中都有用,需要经常巩固。

你可能感兴趣的:(Boolan面向对象下第二周笔记)