類的構造函數
·定義:
類的構造函數是類的一種特殊的成員函數,它會在每次建立類的新對象時執行。ios
構造函數的名稱與類的名稱是徹底相同的,而且不會返回任何類型,也不會返回 void。函數
構造函數可用於爲某些成員變量設置初始值。spa
·無參構造函數
下面爲實例:code
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 }
上述代碼運行結果:對象
·有參數的構造函數
默認的構造函數沒有任何參數,但若是須要,構造函數也能夠帶有參數。這樣在建立對象時就會給對象賦初始值,以下面的例子所示:blog
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 }
上述代碼運行結果以下所示:get
·使用初始化列表來初始化字段
使用初始化列表來初始化字段:io
Line::Line( double len): length(len) { cout << "Object is being created, length = " << len << endl; }
也可寫爲:class
Line::Line( double len) { cout << "Object is being created, length = " << len << endl; length = len; }
假設有一個類 C,具備多個字段 X、Y、Z 等須要進行初始化,同理地,您能夠使用上面的語法,只須要在不一樣的字段使用逗號進行分隔,以下所示:stream
C::C( double a, double b, double c): X(a), Y(b), Z(c) { .... }
總結:
若是建立一個類你沒有寫任何構造函數,則系統會自動生成默認的無參構造函數,函數爲空。
一旦你寫了一個有參構造函數,系統就不會再自動生成這樣一個默認的構造函數,若是但願有一個這樣的無參構造函數,則須要本身顯示地寫出來
通常構造函數能夠有各類參數形式,一個類能夠有多個通常構造函數,前提是參數的個數或者類型不一樣