Boolan面向对象下第二周笔记

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


vptr:

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

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

二、关于this

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

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

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

三、动态绑定

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

2.存在向上转型

3.调用的是虚函数

四、const

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


由上图可以看到:

常量(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++学习中都有用,需要经常巩固。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容