编程语言——C++的对象模型
来源:互联网 发布:可口可乐的销售数据 编辑:程序博客网 时间:2024/06/16 15:14
C++ 结构体和类
对象本质上就是一块存储空间,
A(对象大小) => B(对象成员)A -> C(空类、对齐)A -> D(继承、虚函数)B -> E(虚函数表)B -> F(父类数据成员)
在c语言转化为汇编语言的过程中,转化并不是自主产生的,不是一一映射,而是在编译器的解释下完成的,意识到这一点很重要。
this指针相当于一个基地址,而成员变量都是在该地址上的偏移。
构造函数与析构函数
对象的分类
- 局部对象
- 堆对象
- 参数对象
- 返回对象
- 全局对象
- 静态对象
虚函数
对象的多态性需要通过虚表和虚指针来完成。
虚表是一个存储虚函数指针的表,它的指针存放在对象空间的前4个字节!
有时需要考虑一下 C++语言使用者(程序员)、编译器、汇编语言三者之间的关系,理清它们的关系,对理解C++语法有很大的帮助。
首先,程序员 A 是需求方,A 说:我需要面向对象多态的特性;
编译器,是问题方案的提供方,复杂想办法解决问题;
汇编语言是最终的运行环境,或者说目标,汇编语言的语法是固定不变的,它不会为了A的需求做任何的变动。
编译器,思来想去,想来思去,提出了虚指针的方案!
类成员函数,在编译时,编译器就可以知道相对固定的地址,所以转换为汇编语言也相对容易。object.method 调用时,编译器很容易知道这是调用的哪个类的哪个函数。而当 object.value 时,由于内存空间还没有分配,所以编译器只能知道一个相对偏移。
阅读全文
0 0
- 编程语言——C++的对象模型
- C语言的对象化模型
- 面向对象的C语言编程
- C语言的面向对象编程
- Objective-C 面向对象的编程语言
- 基于C语言的面向对象编程
- C语言socket编程模型
- C语言的对象化模型(RT-Thread)
- 编程语言的编程模型
- Okumura-Hata模型的计算机编程(C语言)
- 编程语言的精髓——C
- 编程的基础——C语言
- C语言面向对象编程
- C语言面向对象编程
- C语言面向对象编程
- C语言面向对象编程
- C语言对象化编程
- C语言面向对象编程
- Java 如何获取控制台日志输出的信息? WriterAppender 可以实现? 配置文件如何配置
- World Wind Android——基本的Android教程(一)
- echarts x轴显示格式blog
- 获取Builder C++或Dephi的消息框TMessageForm内
- java面试题总结:java的接口类和抽象类的特点
- 编程语言——C++的对象模型
- EasyUI DataGrid 单元格合并(或者说一条数据拆分成多条)
- 源码分析 There is no getter for property named '*' in 'class java.lang.String
- 常见HTTP/FTP/WebSocket错误代码大全
- Ubuntu16.04LTS傻瓜式安装Eclipse图文详情加注释
- tomcat使用技巧
- Linux 常用命令——ln
- ios UDP sendto方法返回值一直是-1
- 2017.11.15 注册表开启显示隐藏文件及文件夹