脚本宝典收集整理的这篇文章主要介绍了c++面向对象高级编程 第五周学习笔记,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
vptr&vtbl
对象在内存中存在一个虚函数指针,其一般存在于数据成员之前,虚函数指针指向虚函数表,在虚函数表中按照函数声明顺序存储着虚函数的地址。可以用(*(p->vptr)[n])(p);
或者(*p->vptr[n])(p);
访问。
动态绑定
当对象满足
- 使用指针调用
- 指针存在向上转型 UPcast
- 调用对象是一个虚函数
则编译器会在编译时进行动态绑定
对象模型&关于this
通过将需要子类实现的功能声明为virtual函数,使子类的this指针可以upcast 调用父类函数,内部使用不同子类的具体实现。
const
const成员函数
const可以修饰成员函数来避免成员函数对this指针的修改。
当成员函数的const和non-const版本都存在时,const成员只能调用const版本,
non-const成员只能调用non-const版本。
new&delete
我们可以对operator new和oPErator delete进行各种版本的重载,但是每个版本都需要有自己的独特参数序列
其中第一个参数必须是size_t.
对于operator delete的各种重载版本,它们虽然可以被重载,但是不会被delete调用,只有当new 调用的构造函数抛出异常时,它们才会被调用,用来清除申请失败对象的内存。
关于operator new和 operator delete的具体讨论见这次作业。operator new与 delete重载
当然我们也可以通过使用域作用符::来强制使用全局new和全局delete,调用方法是::new和::delete
以上是脚本宝典为你收集整理的c++面向对象高级编程 第五周学习笔记全部内容,希望文章能够帮你解决c++面向对象高级编程 第五周学习笔记所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。