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。
前者稱為 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 則留言:
> 就效率上來說,Initialization 大於 Assignment
內建型別的 local variables 沒有這件事喔 XD。
嗯
XD
張貼留言