c++中對象的構造和銷毀


對象的初始化 如下

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時執行時執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM