關注「杜明c」,每天進步一點點!
什麼是建構函式建構函式是類的特殊成員函式,當我們定義乙個類時,會自動呼叫類的建構函式,來對類成員進行初始化。另外建構函式不能指定返回值。對我們使用者而言,如果不主動編寫建構函式,編譯器會自動生成預設的建構函式。
class test
; //建構函式和類同名
};
建構函式可以過載嗎建構函式可以過載,但是我們需要注意,當使用者寫了任意乙個建構函式,編譯器將不再為該類生成別的建構函式。
什麼意思呢?我們來看乙個例子
class test; //編譯器將不再自動生成預設的建構函式,如下 test():{}; };
可能有同學要問,為什麼一定要有預設的建構函式,沒有的話不也能正常執行嗎,確實是的,當沒有預設的建構函式時,我們的程式是能夠正常執行,但是該類每一次構造都需要顯示輸入引數來初始化。
不能作為動態分配陣列的元素型別。
靜態的分配陣列也必須提供引數進行初始化。
所以加上預設的建構函式準沒錯。建構函式初始化式現在我們來了解一下,怎麼樣寫乙個建構函式。建構函式初始化式的寫法和普通函式不太相同,可能讓我們有些不適應,我們來看乙個例子
注意:在建構函式初始化式中不能對同乙個變數兩次賦值。
class test;//請注意,對成員的初始化我們放在了括號外,且用逗號分隔};
為什麼要這樣寫呢,我按照常規的寫法不是也ok嗎?//這樣寫是完全ok的class test;};
程式在執行到建構函式括號裡之前,實際上已經對成員變數進行了一次賦值,在建構函式括號裡的賦值實際上是對成員變數值的一次覆蓋,使用建構函式初始化式才能最高效初始化。
如果某成員變數是乙個類,且沒有預設建構函式,那麼不使用建構函式初始化式將導致初始化失敗。
建構函式還有什麼講究有些同學學習了建構函式,就會不自覺的產生這樣的寫法,是錯誤的。
test t1(); //試圖這樣來定義乙個test類,是錯誤的,我們需要去掉括號test t1; //√
使用建構函式初始化式的時候,程式並不是按照你寫的順序對成員進行初始化賦值,而是按照成員在類中的定義順序來進行初始化。
當a為b的父類時,a的建構函式先執行。
end
杜明c專注c/c++
長按關注
你不一定懂的cpu顯示資訊
你不一定懂的cpu顯示資訊 在使用top命令的時候會看到這麼一行 裡面的各個值分別是什麼意思呢?今天被問到這個問題,發現答的不是很清楚。果然啊,天天用最多的top命令都還沒摸透。慚愧。於是就查了些資料 cpu s 表示的是cpu資訊。各個值的意思是 好了,如果說列出上面的條條框框說我懂了,那真是自欺...
你不一定懂的cpu顯示資訊
在使用top命令的時候會看到這麼一行 裡面的各個值分別是什麼意思呢?今天被問到這個問題,發現答的不是很清楚。果然啊,天天用最多的top命令都還沒摸透。慚愧。於是就查了些資料 cpu s 表示的是cpu資訊。各個值的意思是 好了,如果說列出上面的條條框框說我懂了,那真是自欺欺人了。下面是我自己的理解 ...
你不一定懂的cpu顯示資訊
在使用top命令的時候會看到這麼一行 裡面的各個值分別是什麼意思呢?今天被問到這個問題,發現答的不是很清楚。果然啊,天天用最多的top命令都還沒摸透。慚愧。於是就查了些資料 cpu s 表示的是cpu資訊。各個值的意思是 好了,如果說列出上面的條條框框說我懂了,那真是自欺欺人了。下面是我自己的理解 ...