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















 
 
 
 
 
 
 