爱技术 & 爱分享
爱蛋蛋 & 爱生活

深度探索C++对象模型

对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。
Class Function-编程日志

Class Function

Shadow阅读(1626)赞(1)

Nonstatic Nonvirtual Member Function C++的设计准则之一就是:nonstatic nonvirtual member function 至少必须和nonmember function有相同的效率。也就说...

Data Member 指针-编程日志

Data Member 指针

Shadow阅读(1623)赞(1)

这个系列已经断更2年多了,如今再更一篇,虽然已经学习完这部分的知识很久了。了解这部分知识可能不会在你实际工作中起到直接作用,不过能对C++对象的底层实现有所了解在定位问题上能提供很大的帮助。接下来有时间的话,会尽量把这一系列完结,把之前做的...

Data Member 与继承-编程日志

Data Member 与继承

Shadow阅读(2869)赞(1)

在 C++ 继承模型中,一个 drived class object 所表现出来的东西,是其自己的member 加上bases members的总和。 至于 drived class member 和base class members 的...

传送门
Data Member 存取-编程日志

Data Member 存取

Shadow阅读(2677)赞(1)

这次我们想讨论一下,Data Member 的存取开销。 如下代码: Point3D origin; origin.x=0.0; x的存取开销是什么? 这个问题不能一概而论,必须视 x 和 Point3D如何定义而定。x可能是 static...

传送门
Data Member 布局-编程日志

Data Member 布局

Shadow阅读(2870)赞(0)

在class 中,nonstatic data member 在 class object 中的排列顺序和其被声明的顺序一样。 static data member 会存放在程序的data segment中,和class object 无关...

传送门
Data Member 绑定-编程日志

Data Member 绑定

Shadow阅读(2873)赞(0)

这篇文章主要是跟大家聊一下,C++ Data Member 绑定的历史故事,以及对我们现在的代码产生的影响。 extern float x; class Point3D { public: Point3D(float,float,float...

传送门
sizeof(Empty Class)-编程日志

sizeof(Empty Class)

Shadow阅读(2926)赞(0)

class MyClass { }; 对于上面的这个类,大家可否很明确的告诉我,sizeof(MyClass)是多少? 我在Visual Studio 2017 和 Gcc7.2上得到的输出都是 1。 大家是否会很好奇,为什么明明是个空类,...

传送门
Member Initialization List-编程日志

Member Initialization List

Shadow阅读(2947)赞(0)

当你写出一个constructor的时候,就有机会设定 class member的初始值。要不是经过 member initialization list 就是在constructor 函数体内部。 本文主要是来讨论一下何时使用initia...

传送门
C++程序转化(NRVO)-编程日志

C++程序转化(NRVO)

Shadow阅读(2642)赞(0)

这篇文章干啥呢? 不太好说… 大体来说,还是算程序转化语意吧 已知下面的程序片段: #include "X.h" X foo() { X xx; // ... return xx; } 来吧,你看到这段程序会有什么假设? 我猜,...

传送门
Copy Constructor(复制构造函数)的构造操作-编程日志

Copy Constructor(复制构造函数)的构造操作

Shadow阅读(2758)赞(0)

好吧看标题,应该知道本篇文章想瞎扯点什么了吧… 没错,你很聪明,这篇文章就带大家详细了解一下Copy Constructor 的构造操作… 来来来 开篇第一问:那些情况下一个 object 会以另外一个 class ...

传送门

游戏 && 后端

传送门传送门