(1)爲什麼類需要參數列表?完全可以在構造函數中對成員變量賦值啊?
在構函數可以使用參數列表或者在構造函數內部對成員變量賦值,但是對於const類型的成員變量只能初始化,不能在構造函數內部賦值。當然也可以在定義const成員變量的時候初始化,但是這樣就失去了意義,這樣做的後果是對於每一個該類的對象,這個const成員變量都是一個固定的值。
主要是性能問題,對於內置類型,如int, float等,使用初始化類表和在構造函數體內初始化差別不是很大,但是對於類類型來說,最好使用初始化列表,爲什麼呢?使用初始化列表少了一次調用默認構造函數的過程,這對於數據密集型的類來說,是非常高效的。https://blog.csdn.net/baidu_35679960/article/details/78929018
(2)爲什麼類的類的構造函數後面 = delete ?
這種寫法表明禁止使用默認構造函數。
(3)爲什麼一部分虛函數後面 = 0 ?
這種寫法表示這個函數是純虛函數,抽象類的純虛函數是不需要實現的,在子類中進行重寫。
(4)explicit關鍵字什麼意思
我們通常可以在類的構造函數前面看到這個關鍵字,表明顯式構造函數,對應的爲implicit隱式構造函數,默認都是隱式的。
explicit關鍵字只需用於類內的單參數構造函數前面。由於無參數的構造函數和多參數的構造函數總是顯示調用,這種情況在構造函數前加explicit無意義。
google的c++規範中提到explicit的優點是可以避免不合時宜的類型變換,缺點無。所以google約定所有單參數的構造函數都必須是顯示的,只有極少數情況下拷貝構造函數可以不聲明稱explicit。例如作爲其他類的透明包裝器的類