c++類的構造函數

類的構造函數

·定義:

類的構造函數是類的一種特殊的成員函數,它會在每次建立類的新對象時執行。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) { .... }

 總結:

若是建立一個類你沒有寫任何構造函數,則系統會自動生成默認的無參構造函數,函數爲空。
一旦你寫了一個有參構造函數,系統就不會再自動生成這樣一個默認的構造函數,若是但願有一個這樣的無參構造函數,則須要本身顯示地寫出來

通常構造函數能夠有各類參數形式,一個類能夠有多個通常構造函數,前提是參數的個數或者類型不一樣

相關文章
相關標籤/搜索