Boolan c++面向对象高级编程下 第二周笔记

vptr&vtbl

对象在内存中存在一个虚函数指针,其一般存在于数据成员之前,虚函数指针指向虚函数表,在虚函数表中按照函数声明顺序存储着虚函数的地址。可以用(*(p->vptr)[n])(p);或者(*p->vptr[n])(p);访问。

动态绑定

当对象满足

  1. 使用指针调用

  2. 指针存在向上转型 UPcast

  3. 调用对象是一个虚函数

则编译器会在编译时进行动态绑定

对象模型&关于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 调用的构造函数抛出异常时,它们才会被调用,97影院用来清除申请失败对象的内存。
关于operator new和 operator delete的具体讨论见这次作业。operator new与 delete重载

当然我们也可以通过使用域作用符::来强制使用全局new和全局delete,调用方法是::new和::delete

转载于:https://www.cnblogs.com/xinshijue6080/p/7868537.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值