c++學習筆記之建構函式和析構函式
c++利用了建構函式和析構函式來解決成員變數初始化和銷毀清理工作,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。
物件的初始化和清理工作是編譯器強制要求我們做的事情,因此如果我們不提供建構函式和析構函式,編譯器會給我們提供預設的建構函式和析構。編譯器所提供的建構函式和析構函式是空實現
**建構函式:**主要作用於建立物件時為物件的成員屬性賦值,建構函式由編譯器自動呼叫,無需手動呼叫。
**析構函式:**主要作用於在物件銷毀前系統自動呼叫,執行一些清理工作。
建構函式語法
類名 (
)
~類名 (
)
person p;
//預設建構函式
person p2()
;//有參建構函式
person p3
(p2)
;//拷貝建構函式
顯示法:
person p1;
person p2 =
person(10
);//有參構造
person p3 =
person
(p2)
;//拷貝構造
隱式轉換法
person p4 =10;
//相當於 person p4 = person(10) 有參構造
person p5 = p4;
//拷貝構造
構造函式呼叫規則
預設情況下 c++編譯器至少給乙個類3個函式
1.預設建構函式(無參,函式體為空)
2.預設析構函式(無參,函式體為空)
3. 預設拷貝建構函式,對屬性進行值拷貝
呼叫規則
1.如果使用者定義有參建構函式,c++不再提供預設無參構造,但是會提供預設拷貝構造。
4. 如果使用者自定義拷貝建構函式,c++不會再提供其他建構函式。
class
person
//有參建構函式
person
(int a)
//拷貝建構函式
person
(const person& p)
//析構函式
~person()
public
:int age;};
void
test01()
void
test02()
intmain()
c 學習筆記 建構函式和析構函式
一 建構函式作用 幫助我們初始化物件 給物件的每個屬性依次的賦值 建構函式是乙個特殊的方法 建構函式沒有返回值,連 void 也不能寫。建構函式的名稱必須跟類名一樣。建立物件的時候會執行建構函式建構函式是可以有過載的。類當中會有乙個預設的無引數的建構函式,當你寫乙個新的建構函式之後,不管是有引數的還...
C 學習之建構函式 析構函式
在c 的類中,都會有乙個或多個建構函式 乙個析構函式 乙個賦值運算操作符。即使我們自己定義的類中,沒有顯示定義它們,編譯器也會宣告乙個預設建構函式 乙個析構函式和乙個賦值運算操作符。例如 宣告乙個空類 class empty 但是這個空類和下面這個類是等同的 class empty 預設建構函式 e...
C 之建構函式和析構函式
我們已經知道了物件就是類的例項,二者的關係就相當於資料型別與它的變數的關係。每個物件區別於其他物件的地方就是依靠它的自身屬性,即資料成員的值。c 中,物件在定義的時候進行的資料成員的設定,稱為物件的初始化。同樣,在特定物件使用結束時,還要對資料成員進行一些清理工作。c 中對類的初始化和清理的工作,分...