鍍金池/ 教程/ C++/ 構(gòu)造函數(shù)和析構(gòu)函數(shù)
類的訪問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

構(gòu)造函數(shù)和析構(gòu)函數(shù)

類的構(gòu)造函數(shù):

一個(gè)類的構(gòu)造函數(shù)是每當(dāng)我們創(chuàng)建一個(gè)類的新對(duì)象時(shí)執(zhí)行的類的一個(gè)特殊的成員函數(shù)。

構(gòu)造函數(shù)將有完全相同于類的名稱,它不具有任何返回類型可言,甚至不是void。構(gòu)造函數(shù)可以是非常有用的為某些成員變量設(shè)置初始值。

下面的例子說(shuō)明了構(gòu)造函數(shù)的概念:

import std.stdio;

class Line
{
   public:
      void setLength( double len )
      {
        length = len;
      }

      double getLength()
      {
         return length;
      }
      this()
      {
         writeln("Object is being created");
      }

   private:
      double length;
}

void main( )
{
   Line line = new Line();

   // set line length
   line.setLength(6.0);
   writeln("Length of line : " , line.getLength());
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

Object is being created
Length of line : 6

參數(shù)化構(gòu)造函數(shù):

默認(rèn)構(gòu)造函數(shù)沒(méi)有任何參數(shù),但如果需要,構(gòu)造函數(shù)可以有參數(shù)。這可以幫助您在其創(chuàng)建為顯示在下面的例子中,初始值分配給某個(gè)對(duì)象時(shí):

import std.stdio;

class Line
{
   public:
      void setLength( double len )
      {
         length = len;
      }

      double getLength()
      {
         return length;
      }
      this( double len)
      {
         writeln("Object is being created, length = " , len );
         length = len;
      }

   private:
      double length;
}

// Main function for the program
void main( )
{
   Line line = new Line(10.0);

   // get initially set length.
   writeln("Length of line : ",line.getLength());
   // set line length again
   line.setLength(6.0);
   writeln("Length of line : ", line.getLength());

}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

Object is being created, length = 10
Length of line : 10
Length of line : 6

類的析構(gòu)函數(shù):

析構(gòu)函數(shù)執(zhí)行時(shí),類的一個(gè)對(duì)象超出范圍或當(dāng)delete表達(dá)式應(yīng)用到一個(gè)指針,指向該類的對(duì)象類的一個(gè)特殊成員函數(shù)。

析構(gòu)函數(shù)將有完全相同的名稱作為類的前綴與符號(hào)(?),它可以既不返回一個(gè)值,也不能帶任何參數(shù)。析構(gòu)函數(shù)可以是走出來(lái)的程序如關(guān)閉文件,釋放內(nèi)存等前釋放資源非常有用的

下面的例子說(shuō)明了析構(gòu)函數(shù)的概念:

import std.stdio;

class Line
{
   public:
      this()
      {
         writeln("Object is being created");
      }
      ~this()
      {
         writeln("Object is being deleted");
      }

      void setLength( double len )
      {
         length = len;
      }

      double getLength()
      {
         return length;
      }
   private:
      double length;
}


// Main function for the program
void main( )
{
   Line line = new Line();

   // set line length
   line.setLength(6.0);
   writeln("Length of line : ", line.getLength());

}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

Object is being created
Length of line : 6
Object is being deleted