1. 程式人生 > >[C++ Object Model] 繼承對於member佈局的影響

[C++ Object Model] 繼承對於member佈局的影響

     繼承對於member佈局的影響
  1. 選擇哪些函式作為 inline 函式
  2. C++ 記憶體對齊機制
  3. vptr 放置在 class object 的前端還是尾端?
  4. 如何存取 shared subobject 內的資料 
  5. vptr 中 functions 的地址偏移
     函式相關 函式呼叫背後的機制
  • 堆疊建立
  • 引數排列
  • 返回地址
  • 堆疊清除
生成4096個函式,並且儲存在一個函式指標數組裡面,函式無參返回int,要求通過函式指標陣列呼叫能返回函式在陣列中的位置,如fun[50]()就返回50
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
int main(){
	vector<function<int(void)>> fun;
	for (int i = 0; i != 4096; ++i){
		fun.push_back([=]{
			return i;
		});
	}
	//test
}


static member functions 特性
  1. 沒有 this 指標
  2. 不能直接存取其 class 中的nonstatic members
  3. 不能被宣告為 const, volatile 或 virtual
  4. 不需要經由 class object 呼叫