C++:構造函數的默認參數知識拓展


和普通函數一樣,構造函數中參數的值既可以通過實參傳遞,也可以指定為某些默認值,即如果用戶不指定實參值,編譯系統就使形參取默認值。
 
例9.3的問題也可以使用包含默認參數的構造函數來處理。
 
【例9.4】將例9.3程序中的構造函數改用含默認值的參數,長、寬、高的默認值均為10。
#include <iostream>
using namespace std;
class Box
{
   public :
   Box(int h=10,int w=10,int len=10); //在聲明構造函數時指定默認參數
   int volume( );
   private :
   int height;
   int width;
   int length;
};
Box::Box(int h,int w,int len) //在定義函數時可以不指定默認參數
{
   height=h;
   width=w;
   length=len;
}
int Box::volume( )
{
   return (height*width*length);
}
int main( )
{
   Box box1; //沒有給實參
   cout<<"The volume of box1 is "<<box1.volume( )<<endl;
   Box box2(15); //只給定一個實參
   cout<<"The volume of box2 is "<<box2.volume( )<<endl;
   Box box3(15,30); //只給定2個實參
   cout<<"The volume of box3 is "<<box3.volume( )<<endl;
   Box box4(15,30,20); //給定3個實參
   cout<<"The volume of box4 is "<<box4.volume( )<<endl;
   return 0;
}
程序運行結果為:
The volume of box1 is 1000
The volume of box2 is 1500
The volume of box3 is 4500
The volume of box4 is 9000
 
程序中對構造函數的定義(第12-16行)也可以改寫成參數初始化表的形式:
    Box::Box(int h,int w,int len):height(h),width(w),length(len){ }
 
可以看到,在構造函數中使用默認參數是方便而有效的,它提供了建立對象時的多種選擇,它的作用相當於好幾個重載的構造函數。
 
它的好處是,即使在調用構造函數時沒有提供實參值,不僅不會出錯,而且還確保按照默認的參數值對對象進行初始化。尤其在希望對每一個對象都有同樣的初始化狀況時用這種方法更為方便。
 
關於構造函數默認值的幾點說明:
1、應該在聲明構造函數時指定默認值,而不能只在定義構造函數時指定默認值。
2、程序第5行在聲明構造函數時,形參名可以省略。
3、如果構造函數的全部參數都指定了默認值,則在定義對象時可以給一個或幾個實參,也可以不給出       實參。
4、在一個類中定義了全部是默認參數的構造函數后,不能再定義重載構造函數。
 
 
 


免責聲明!

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



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