C 建構函式的執行順序

2021-09-25 03:48:57 字數 959 閱讀 2397

類的大小:

1)一般情況下,類的大小是類裡資料成員大小之和,普通函式不佔空間;

2)static不佔空間大小;

3)virtual虛函式,如果有虛函式,則多乙個vptr(虛指標),不管有多少虛函式,都只有乙個虛指標,指標佔4個位元組大小。

4)空類佔乙個位元組大小。

建構函式的執行順序:

class test

test(const test &t)

test& operator=(const test &t) //&引用提公升效率, 1.不在開闢空間2.拷貝構造也不需要再調動賦值之類的

//test& operator=(test* const this, const test &t)

~test()

public:

int getvalue()const

private:

int m_data;

};test fun(test x) //2.傳遞物件t時,會有一次拷貝構造 //拿物件t初始化物件x;

//test fun(test &x) //構造,構造, 拷貝構造

//test& fun(test x) //會被警告,拿乙個臨時物件返回

test fun(test &x)

int main()

{test t(100); //1,建構函式

//fun(t); //會有幾次構造

//test t2;

//t2 = fun(t); //構造t,構造t2, 拷貝構造x, 構造tmp, 拷貝構造臨時物件,釋放tmp,釋放x 賦值語句

//test t2 = fun(t); //構造t, 構造tmp, 拷貝構造臨時物件,析構tmp, 拷貝構造t2,析構臨時物件

//析構t2, 析構t;

//但是編譯器會進行優化, 直接將t2,作為臨時拷貝物件

return 0;

建構函式的執行順序

任何建構函式都可以進行配置,以便在執行自己的 前呼叫其它建構函式。我們首先看看在建立類的例項時會發生什麼情況。為了例項化派生的類,必須例項化它的基類。而要例項化這個基類,又必須例項化這個基類的基類,這樣一直例項化到system.object為止。結果是無論使用什麼建構函式例項化乙個類,總是要先呼叫s...

建構函式的執行順序

1 using system 2 using system.collections.generic 3 using system.linq 4 using system.text 5 6 namespace 例項構造器13 14 public string b bjq 15 16 public a ...

c 靜態物件建構函式的執行順序

使用一段簡單的 說明這個問題 using system using system.collections.generic using system.linq using system.text namespace staticvar 例子1 class common1 class common2 c...