我想我对类数据成员及其在内存中的表示有一个清晰的了解:
类的成员定义了对象的布局:数据成员一个接一个地存储在内存中。使用继承时,派生类的数据成员只是添加到基类的数据成员中。
然而,当我试图弄清楚一个对象的“蓝图”是如何被它的函数成员用额外的语法元素修改的时:我遇到了困难。在下面的文本中,我试图列出所有有问题的1函数成员语法,这些语法使我难以弄清楚对象内存大小和结构。
我无法弄清楚的类成员函数:
- 函数类型:
lambda
, 函数指针,修改,非修改。 - 包含额外的语法元素:(与
friend
非成员)virtual
,,,,,,,,,,,。final
override
static
const
volatile
mutable
问题:
在对象内存布局的上下文中,具有不同说明符的成员函数之间有什么区别以及它们如何影响它?
笔记:
我已经读过这个和这个,它没有提供令人满意的答案2。这谈到了最接近重复的一般情况(我理解)。(但我特别关注有问题的语法列表,这是我的实际问题,并且没有在其中介绍。)
1.在影响对象内存布局方面。
2. 第一个是关于GCC 编译器的,第二个是关于 @m@zon 的书的链接。