3 1 3 2 資料成員的繫結與布局

2021-07-03 22:39:42 字數 727 閱讀 3291

q1:關於類成員函式中的變數與類資料成員、全域性資料之間的繫結關係

• 乙個 inline 函式實體,在整個類宣告未被完全看見之前,是不會被編譯器分析的

• 該延遲規則對引數列表中的型別名稱不起作用,型別名稱之前的繫結會在遇見時進行決議(* 重點 *)

eg:

typedef

int length;

int _val = 10;

class x

void func(length x) // 此時,length將被立即決議,並被判定為 int

typedef

float length;

length _val;

};int main()

q2:宣告順序與物件布局

• 非靜態資料成員在類物件中的排列順序和其被宣告的順序相同

• 任何靜態型別資料均不會被放進物件布局之中,初始化的靜態資料放入data段中,未初始化的靜態資料放入bss段中

• 較晚宣告的資料成員在類物件中有較高的位址,各個成員之間不一定連續排列

• 成員之間可能會插入填充位元組,或編輯器內部產生的成員(如vptr)

• 編譯器合成的內部成員可放在任何位置

• 訪問段的增多不會帶來額外的負擔,即,八個訪問級中的宣告八個成員與乙個訪問段中宣告八個成員得到的物件大小相同

資料成員布局

project100.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include pch.h include include include using namespace std define get a,m int a 0 m 定義乙個類 pragma pack 1 對齊方式...

C 物件導向 類的資料成員 繫結 布局和訪問

一 資料成員的繫結 the binding of a data member 先看一段 某個標頭檔案,從某處含入 extern float x class point3d void x float new x private float x,y,z 現在的問題是 在類的兩個成員函式x中,被返回和設定...

類的定義 資料成員與成員方法

私有成員與公有成員 class a def init self,value1 0,value2 0 構造方法 self.value1 value1 self.value2 value2 私有成員 def setvalue self,value1,value2 成員方法,公有成員 self.value...