類的大小:
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...