星期四, 3月 08, 2007

Initialization VS Assignment

double d = 3.14;

double d;
d = 3.14;

以上這兩種寫法的表層意義是一樣的;然而,實質上卻完全不同。
前者稱為 Initialization,後者則是 Assignment。

前者只會出現在 Definition,而後者是隨時可用。就效率上來說,Initialization 大於 Assignment,原因在於 Initialization 是在配置出生硬空間時,就在該空間上賦值;而 Assignment 則是先找出該空間所在,再加以賦值。

就 class 來說, Initialization 是喚起 copy constructor;而 Assignment 則喚起 Assignment operator。

對所有 class object 來說,若沒有明確指明 Initialization 仍必然進行 Initialization,也就是喚起 default constructor。
而 built-in type 為 Local or Dynaic 若不指明要 Initialization 則不會進行 Initialization。

2 則留言:

Josh Ko 提到...

> 就效率上來說,Initialization 大於 Assignment

內建型別的 local variables 沒有這件事喔 XD。

Celith 提到...


XD