1.建構函式
作用:建立物件的時候,由系統自動完成物件的初始化工作,每建立乙個物件時,系統將自動呼叫該物件的建構函式。
乙個物件若未設定建構函式,則系統會自動新增乙個無參無操作的建構函式,每個物件完成建立時必須呼叫建構函式。
2.建構函式的表示
(1)建構函式的函式名與其類名同名。
(2)建構函式是類的成員函式,訪問許可權一般被設定為public。
(3)建構函式無返回值型別。
3.建構函式的示例
class base
void print()
4.建構函式需要注意的幾個知識點
(1)建構函式可以在類外實現,必須要加類的作用域,類似於類內的其他函式。
(2)建構函式由系統自動呼叫,在程式中不可以顯式的隨意呼叫。
(3)物件,物件陣列在建立時,系統會自動呼叫建構函式,對於物件陣列而言,系統會為每個陣列元素呼叫一次建構函式。
(4)定義指向物件的指標和物件的引用時,系統不會呼叫建構函式。因為這個時候並沒有建立物件。
(5)建構函式沒有返回值。建構函式是一種特殊型別的函式,並沒有返回值,主要要區別於void(無返回值型別),void也是屬於一種返回值。
5.有了建構函式之後的方便之處
建立物件時可以這樣使用:
類名 物件名(初始化值);
這樣的話,系統自動為物件呼叫建構函式時就會自動將初始化值傳遞給建構函式的形參。
6.建構函式的過載
建構函式是可以過載的,過載條件同一般函式一樣,同樣,建構函式也可以設定預設形參,設定方法及規則也同一班函式一致。
7.乙個類中含有其他類的物件
#include
class student
輸出結果:
constructing student.
constructing teacher.
constructing school.
back in main.
分析:若類a的物件是類b的資料成員,建立類b的物件時,必須是先呼叫子物件(也就是a的物件)的建構函式,然後再呼叫類b物件的建構函式。
我自己理解的原因是:建構函式是為了完成對本類物件的初始化,那麼初始化一定需要先有被初始化的物件,在這個例子中也就是s和t,所以必須要先建立出s和t,而s和t的建立就需要呼叫s和t的建構函式,s和t建立好了之後就需要呼叫物件sc的建構函式了。
C 筆記之建構函式
以下部分截圖取自慕課網相關課程 建構函式在物件例項化是被自動呼叫 建構函式與類同名 建構函式沒有返回值 建構函式可以有多個過載形式 例項化物件時僅用到乙個建構函式 建構函式的引數可以有預設值,如果建構函式也使用類外定義,那麼在函式實現部分不用寫預設值,這一點和普通類外定義函式的預設值是一樣的 當使用...
C 筆記(八)建構函式與析構函式
中的mystring類包含乙個指標成員,他指向動態分配的記憶體。複製這個類的物件時,將複製其指標成員,但不會複製指標指向的緩衝區,其結果會造成兩個物件指向同一塊記憶體區,這稱為淺複製,會威脅程式的穩定性。include using namespace std class mystring else ...
C 語言筆記系列之九 析構函式
1.析構函式 1 作用 用來釋放乙個物件,在物件刪除前用來做一些清理工作。2 特點 析構函式是類的特殊函式,函式體可以寫在類內,也可以寫在類外。析構函式的函式名和類名相同,但是在析構函式之前加上了 2.析構函式需要注意的幾個知識點 1 析構函式無形參,無返回值,不可以隨意呼叫且不可過載。從這裡可以看...