一個(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
默認(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ù)執(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