クラス データ メンバーとそのメモリ内表現を明確に理解していると思います。
クラスのメンバーは、オブジェクトのレイアウトを定義します。データ メンバーはメモリに次々と格納されます。継承を使用すると、派生クラスのデータ メンバーがベースのデータ メンバーに追加されるだけです。
しかし、オブジェクトの「ブループリント」が追加の構文要素を持つ関数メンバーによってどのように変更されるかを理解しようとすると、問題が発生します。次のテキストでは、オブジェクト メモリのサイズと構造を理解するのを難しくしている、問題のある1関数メンバーの構文をすべてリストしようとしました。
私が理解できなかったクラスメンバー関数:
- 関数の種類:
lambda
、関数へのポインター、変更する、変更しない。 - 追加の構文要素を含む: (非
friend
メンバー) 、、、、、、、、。virtual
final
override
static
const
volatile
mutable
質問:
オブジェクトのメモリ レイアウトのコンテキストで、異なる指定子を持つメンバー関数の違いと、それらがどのように影響するか?
ノート:
私はすでにこれとこれを読んでいますが、満足のいく答えはありません2。これは、重複に最も近い一般的なケース(私が理解している)について語っています。
1. オブジェクト メモリ レイアウトへの影響に関して。
2. 1 つ目はGCC コンパイラーについて説明しており、2 つ目は @m@zon に関する書籍へのリンクを提供しています。