EasyC++,默認構造函數
大家好,我是梁唐。
默認構造函數
上一篇文章當中介紹的是顯式構造函數,也就是說我們需要傳入值來對類的成員變量進行初始化。
但也有一些情況,我們可能并不需要傳入值進行初始化,或者有一些其他的邏輯。針對這種情況,C++提供了默認構造函數的功能。所謂默認構造函數,也就是在沒有提供顯式的初始值時,用來創(chuàng)建對象的構造函數。
默認構造函數非常簡單,還是以之前的Stock類為例:
- Stock::Stock() {
- ...
- }
如果默認構造函數里沒有任何邏輯,我們也可以把它寫在類聲明里:
- class Stock {
- ...
- Stock() {}
- };
- #endif
C++當中有一個很奇怪的設定,當一個類我們沒有提供任何構造函數時,C++會默認賦予它一個默認構造函數。但當我們一旦實現了構造函數之后,C++則不會進行如此操作。意味著對于定義了構造函數的類來說,想要使用默認構造函數,必須由程序員手動定義。
有了默認構造函數之后,我們才可以直接聲明類的實例:
- Stock stock1;
如果Stock類沒有默認構造函數,那么上述的語句會報錯。
實現默認構造函數,除了上述那樣手動創(chuàng)建一個沒有任何參數的構造函數之外,還可以將已有的構造函數的所有參數都設置默認值。
- Stock(const string &co = "Error", int n = 0, double pr = 0.0);
由于只能有一個默認構造函數,所以不要同時采用這兩種方式。