1樓:夏之幻想
使用value initialization 可以保證初等型別的值初始化為0,類型別呼叫無參建構函式,這樣它們的行為可以看成一致的了。
2樓:靈劍
其實沒有什麼區別啊,相當於基本型別的建構函式什麼都沒有做,類的建構函式如果你在預設函式裡面什麼都不做的話,也沒有哪個欄位會被自動初始化的,只有虛函式表之類的會被自動初始化。
同樣,定義乙個自動初始化的類作為標準型別的代替也不複雜:
class
MyInt
MyInt
(intv)
:_value(v
){}MyInt
(const
MyInt&b
):_value(b
._value){}
intoperator
int()
MyInt
&operator=(
intb
)...
private
:int
_value;};
主要是不自動初始化是個小事,一般你用 = 0的語法手工初始化一下就行了,陣列還可以用memset;如果你預設初始化了,你就沒法減掉這個額外開銷了。
3樓:陳碩
為了相容C。假如C++預設將內建型別成員初始化為0,那麼 C++ class 會比 C struct 慢,這就是原罪,沒人會買C++的賬,說不定會死在搖籃裡。
C 的類成員初始化 定義的時候寫 寫在初始化列表裡 寫在建構函式函式體中 有什麼區別?
jencol teng 首先,初始化順序是按照宣告順序初始化。其次,C 11之後,允許直接在類中初始化變數,C 11之前只有部分編譯器允許。其初始化效率和初始化列表一樣。重點 如果變數放在初始化列表,那麼在類初始化的時候,直接呼叫帶引數的建構函式初始化,而不是使用預設建構函式初始化。來乙個例子 cl...
c 類的建構函式初始化問題??
Right If you don t specify any constructors,the compiler will write one for you that doesn t take any arguments.This compiler generated default constr...
c語言字串陣列初始化時剩餘長度全部為 0 嗎?
C語言答疑課堂 我覺得題主的問題有三個地方需要回答 1.char abc abc 這種寫法是不指定陣列的大小,由編譯器來決定陣列的大小,而且會在初始化的字串的最後自動加上乙個 0 這種寫法的好處是,不用擔心初始化的字串會否超過陣列的長度。2.char abc 10 abc 這種寫法是指明了陣列的大小...