類的構造函數
·定義:
類的構造函數是類的一種特殊的成員函數,它會在每次創建類的新對象時執行。
構造函數的名稱與類的名稱是完全相同的,並且不會返回任何類型,也不會返回 void。
構造函數可用於為某些成員變量設置初始值。
·無參構造函數
下面為實例:
1 #include<iostream> 2 using namespace std; 3 class Line 4 { 5 public: 6 void setLength(double len); 7 double getLength(void); 8 Line();//為構造函數 9 10 private: 11 double length; 12 }; 13 14 //成員函數定義,包括構造函數 15 Line::Line(void) 16 { 17 cout << "Object is being created" << endl; 18 } 19 void Line::setLength(double len) 20 { 21 length = len; 22 } 23 double Line::getLength(void) 24 { 25 return length; 26 } 27 28 //程序主函數 29 int main() 30 { 31 Line line; 32 //設置長度 33 line.setLength(6.0); 34 cout << "Length of line:" << line.getLength() << endl; 35 system("pause"); 36 return 0; 37 38 }
上述代碼運行結果:
·有參數的構造函數
默認的構造函數沒有任何參數,但如果需要,構造函數也可以帶有參數。這樣在創建對象時就會給對象賦初始值,如下面的例子所示:
1 #include <iostream> 2 3 using namespace std; 4 5 class Line 6 { 7 public: 8 void setLength( double len ); 9 double getLength( void ); 10 Line(double len); // 這是構造函數 11 12 private: 13 double length; 14 }; 15 16 // 成員函數定義,包括構造函數 17 Line::Line( double len) 18 { 19 cout << "Object is being created, length = " << len << endl; 20 length = len; 21 } 22 23 void Line::setLength( double len ) 24 { 25 length = len; 26 } 27 28 double Line::getLength( void ) 29 { 30 return length; 31 } 32 // 程序的主函數 33 int main( ) 34 { 35 Line line(10.0); 36 37 // 獲取默認設置的長度 38 cout << "Length of line : " << line.getLength() <<endl; 39 // 再次設置長度 40 line.setLength(6.0); 41 cout << "Length of line : " << line.getLength() <<endl; 42 43 return 0; 44 }
上述代碼運行結果如下所示:
·使用初始化列表來初始化字段
使用初始化列表來初始化字段:
Line::Line( double len): length(len) { cout << "Object is being created, length = " << len << endl; }
也可寫為:
Line::Line( double len) { cout << "Object is being created, length = " << len << endl; length = len; }
假設有一個類 C,具有多個字段 X、Y、Z 等需要進行初始化,同理地,您可以使用上面的語法,只需要在不同的字段使用逗號進行分隔,如下所示:
C::C( double a, double b, double c): X(a), Y(b), Z(c) { .... }
總結:
如果創建一個類你沒有寫任何構造函數,則系統會自動生成默認的無參構造函數,函數為空。
一旦你寫了一個有參構造函數,系統就不會再自動生成這樣一個默認的構造函數,如果希望有一個這樣的無參構造函數,則需要自己顯示地寫出來
一般構造函數可以有各種參數形式,一個類可以有多個一般構造函數,前提是參數的個數或者類型不同