c++類的構造函數


類的構造函數

·定義:

類的構造函數是類的一種特殊的成員函數,它會在每次創建類的新對象時執行。

構造函數的名稱與類的名稱是完全相同的,並且不會返回任何類型,也不會返回 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)
{
  ....
}

 總結:

如果創建一個類你沒有寫任何構造函數,則系統會自動生成默認的無參構造函數,函數為空。
一旦你寫了一個有參構造函數,系統就不會再自動生成這樣一個默認的構造函數,如果希望有一個這樣的無參構造函數,則需要自己顯示地寫出來

一般構造函數可以有各種參數形式,一個類可以有多個一般構造函數,前提是參數的個數或者類型不同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM