经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++面向对象高级编程学习笔记!吃灰系列,拿去收藏吧!
来源:cnblogs  作者:C语言编程学习基地  时间:2021/1/11 14:55:13  对本文有异议

◇ 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 调用的构造函数抛出异常时,它们才会被调用,用来清除申请失败对象的内存。

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

今天的学习就止步如此吧,明天的你也要继续加油啊~


 

最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

【值得关注】我的 C/C++编程学习交流俱乐部!【点击进入】

问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

原文链接:http://www.cnblogs.com/huya-edu/p/14262021.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号