對象的初始化 如下
ckasss Person { public: char name[20]; char sex; int age; }; Person p={"cheng",'f' ,20}; //對象初始化
構造數組對象時,需要一個沒有參數的構造函數,進行對象初始化。
如果定義了一個對象,而忘記了初始化,對象里面的內容都是未知的,進而造成錯誤,
而類里面有一個自動初始化對象,通過構造函數去初始化對象。
構造函數
(1)構造函數是成員函數,函數體可寫在類體內,也可以寫在類體外
(2)構造函數時特殊函數,該函數的名字與類名字相同,不指定返回值類型。
(3)構造函數可以重載,即可以定義多個參數個數不同的構造函數
(4)在創建對象時,系統自動調用構造函數。
形式如下
ckass Person { public: Perosn() //內部創建 { int i; return ; } }; 外部創建 Person :: Person() { int i; return; }
析構函數
對象同樣需要恰當的被銷毀,c++提供了析構函數,
在對象銷毀時自動調用,(並且析構函數不帶參數)
一個類只能定義一個析構函數,即析構函數不允許重載,
一般的,將析構函數定義為公有成員函數,
在類體內定義析構函數的一般格式是:
~classname()
{
....
}
在類體外定義析構函數的一般格式是:
classname :: ~classname()
{
....
}
1.當對象是系統自動創建的,則在對象的作用域結束時,系統自動調用析構函數。
2.當一個對象是使用new運算符被動態創建的,在使用delete運算符釋放它時,delete將會自動調用析構函數。
1、全局對象,程序一開始,其構造函數就先被執行(比程序進入點更早);程序即將結束前其析構函數將被執行。
2、局部對象,當對象生成時,其構造函數被執行;當程序流程將離開該對象的聲明周期時,其析構函數被執行。
3 、靜態(static)對象,當對象生成時其構造函數被執行;當程序將結束時其析構函數才被執行,但比全局對象的析構函數早一步執行。
4、以new方式產生出來的局部對象,當對象生成時其構造函數被執行,析構函數則在對象被delete時執行時執行