C++中默認構造函數中數據成員的初始化


構造函數的任務是初始化數據成員的,在類中,如果沒有顯示定義任何構造函數,編譯器將為我們創建一個構造函數,稱為合成的默認構造函數,合成的默認構造函數使用與變量初始化相同的規則來初始化成員。即當類中的數據成員沒有在構造函數中顯示初始化,將執行默認初始化

1.對於內置類型(如int,double,char,bool等)和復合類型(數組,指針),定義任何函數體之外的內置類型或復合類型變量將被初始化0,對於函數體內的內置類型的對象,若沒有初始化,其值是未定義的。

2.具有類類型的成員通過運行各自的默認構造函數來進行初始化。

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 class test{
 8 public:
 9     bool a;
10     int b;
11     float c;
12     string s;
13     int *d;
14     int e[3];
15 };
16 test global_a;  //定義在函數之外
17 int main()
18 {
19     test local_a;  //定義在函數之內
20     system("pause");
21     return 0;
22 }

如上可以,定義在函數體之內的內置類型和復合類型,其值均是未定義的,隨機的,而對於類類型string,自動執行其構造函數,初始化為空。

 


免責聲明!

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



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