
C++之对象模型
文章平均质量分 84
南丶风.
一只刚刚踏入C++开发的小白
展开
-
C++对象模型之对象构造语义学
前言 本次笔记记录如下知识点 1、对象的构造顺序 2、局部对象和全局对象的构造和析构 3、局部静态对象,对象数组的构造和析构 4、临时性对象的详细探讨 对象的构造顺序 对象的构造是从父类到子类,从跟源到末端。如下例子所示: class A { public: A() { printf("A::A()执行了,this = %p\n", this); }; virtual ~A() {}; }; class B : public A { public: B() { printf原创 2021-07-11 00:00:50 · 247 阅读 · 2 评论 -
C++对象模型之函数语义学
前言 本次笔记记录如下知识点 成员函数与全局函数调用的区别 虚函数与静态成员函数调用的区别 一、成员函数与全局函数的调用区别 编译器内部是将成员函数的调用转换成了一种对全局函数的调用。 成员函数被编译器转换为全局函数后,编译器额外增加了一个叫做this的形参,是一个指针类型。该形参对于确定对象所属的某个成员变量在内存中的位置有用。 二、虚函数与静态成员函数调用区别 虚函数的调用方式 虚函数的调用分为两种:对象名调用和对象指针调用。 对象名调用虚函数就像调用普通成员函数一样,因为这种调用不是原创 2021-06-23 23:26:28 · 271 阅读 · 2 评论 -
C++对象模型之数据语义学
前言 本次笔记记录如下知识点 数据成员绑定时机 进程内存空间布局 数据成员布局 一、数据成员绑定时机 成员函数函数体的解析时机 如果成员变量和全局变量重复了,那么成员函数在内部调用时,会优先调用成员变量,因为编译器对函数体内部的变量进行解析时,是从整个类定义完成之后进行的。 如下示例 string myvar; class Base { public: int myfunc() { return myvar; } private: int myvar; }; int main()原创 2021-06-16 00:23:11 · 186 阅读 · 3 评论 -
C++对象模型之虚函数
C++之虚函数 前言 本次笔记记录如下知识点 虚函数表指针位置分析 继承关系下虚函数的调用 虚函数表的分析 虚函数表指针位置分析 一个类中如果有虚函数,针对这个类会产生一个虚函数表,生成这个类对象的时候,该对象就有一个指针用来指向这个虚函数表的起始位置。 虚函数表指针位于对象内存的起始位置。 如下示例: #include <iostream> using namespace std; class A{ public: int i; virtual void fun(原创 2021-06-11 00:11:13 · 304 阅读 · 2 评论 -
C++对象模型之对象基本结构
C++之对象模型 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本原创 2021-05-20 23:24:04 · 267 阅读 · 0 评论