欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

C++構(gòu)造函數(shù)的默認(rèn)參數(shù)

和普通函數(shù)一樣,構(gòu)造函數(shù)中參數(shù)的值既可以通過(guò)實(shí)參傳遞,也可以指定為某些默認(rèn)值,即如果用戶(hù)不指定實(shí)參值,編譯系統(tǒng)就使形參取默認(rèn)值。

【例】

#include <iostream>
using namespace std;
class Box
{
  public :
  Box(int h=10,int w=10,int len=10); //在聲明構(gòu)造函數(shù)時(shí)指定默認(rèn)參數(shù)
  int volume( );
  private :
  int height;
  int width;
  int length;
};
Box::Box(int h,int w,int len) //在定義函數(shù)時(shí)可以不指定默認(rèn)參數(shù)
{
  height=h;
  width=w;
  length=len;
}
int Box::volume( )
{
  return (height*width*length);
}
int main( )
{
  Box box1; //沒(méi)有給實(shí)參
  cout<<"The volume of box1 is "<<box1.volume( )<<endl;
  Box box2(15); //只給定一個(gè)實(shí)參
  cout<<"The volume of box2 is "<<box2.volume( )<<endl;
  Box box3(15,30); //只給定2個(gè)實(shí)參
  cout<<"The volume of box3 is "<<box3.volume( )<<endl;
  Box box4(15,30,20); //給定3個(gè)實(shí)參
  cout<<"The volume of box4 is "<<box4.volume( )<<endl;
  return 0;
}

程序運(yùn)行結(jié)果為:

The volume of box1 is 1000
The volume of box2 is 1500
The volume of box3 is 4500
The volume of box4 is 9000

程序中對(duì)構(gòu)造函數(shù)的定義(第12-16行)也可以改寫(xiě)成參數(shù)初始化表的形式:

  Box::Box(int h,int w,int len):height(h),width(w),length(len){ }

可以看到,在構(gòu)造函數(shù)中使用默認(rèn)參數(shù)是方便而有效的,它提供了建立對(duì)象時(shí)的多種選擇,它的作用相當(dāng)于好幾個(gè)重載的構(gòu)造函數(shù)。

它的好處是,即使在調(diào)用構(gòu)造函數(shù)時(shí)沒(méi)有提供實(shí)參值,不僅不會(huì)出錯(cuò),而且還確保按照默認(rèn)的參數(shù)值對(duì)對(duì)象進(jìn)行初始化。尤其在希望對(duì)每一個(gè)對(duì)象都有同樣的初始化狀況時(shí)用這種方法更為方便。

關(guān)于構(gòu)造函數(shù)默認(rèn)值的幾點(diǎn)說(shuō)明:
應(yīng)該在聲明構(gòu)造函數(shù)時(shí)指定默認(rèn)值,而不能只在定義構(gòu)造函數(shù)時(shí)指定默認(rèn)值。
程序第5行在聲明構(gòu)造函數(shù)時(shí),形參名可以省略。
如果構(gòu)造函數(shù)的全部參數(shù)都指定了默認(rèn)值,則在定義對(duì)象時(shí)可以給一個(gè)或幾個(gè)實(shí)參,也可以不給出實(shí)參。
在一個(gè)類(lèi)中定義了全部是默認(rèn)參數(shù)的構(gòu)造函數(shù)后,不能再定義重載構(gòu)造函數(shù)。

C++構(gòu)造函數(shù)的重載
在一個(gè)類(lèi)中可以定義多個(gè)構(gòu)造函數(shù),以便提供不同的初始化的方法,供用戶(hù)選用。這些構(gòu)造函數(shù)具有相同的名字,而參數(shù)的個(gè)數(shù)或參數(shù)的類(lèi)型不相同。這稱(chēng)為構(gòu)造函數(shù)的重載。

通過(guò)下面的例子可以了解怎樣應(yīng)用構(gòu)造函數(shù)的重載。

【例】定義兩個(gè)構(gòu)造函數(shù),其中一個(gè)無(wú)參數(shù),一個(gè)有參數(shù)。

#include <iostream>
using namespace std;
class Box
{
  public : Box( ); //聲明一個(gè)無(wú)參的構(gòu)造函數(shù)
  //聲明一個(gè)有參的構(gòu)造函數(shù),用參數(shù)的初始化表對(duì)數(shù)據(jù)成員初始化
  Box(int h,int w,int len):height(h),width(w),length(len){ }
  int volume( );
  private :
  int height;
  int width;
  int length;
};
Box::Box( ) //定義一個(gè)無(wú)參的構(gòu)造函數(shù)
{
  height=10; width=10; length=10;
}
int Box::volume( ){
  return (height*width*length);
}
int main( )
{
  Box box1; //建立對(duì)象box1,不指定實(shí)參
  cout<<"The volume of box1 is "<<box1.volume( )<<endl;
  Box box2(15,30,25); //建立對(duì)象box2,指定3個(gè)實(shí)參
  cout<<"The volume of box2 is "<<box2.volume( )<<endl;
  return 0;
}

在本程序中定義了兩個(gè)重載的構(gòu)造函數(shù),其實(shí)還可以定義其他重載構(gòu)造函數(shù),其原型聲明可以為:

  Box::Box(int h); //有1個(gè)參數(shù)的構(gòu)造函數(shù)
  Box::Box(int h,int w); //有兩個(gè)參數(shù)的構(gòu)造函數(shù)


在建立對(duì)象時(shí)分別給定1個(gè)參數(shù)和2個(gè)參數(shù)。

關(guān)于構(gòu)造函數(shù)的重載的幾點(diǎn)說(shuō)明:
調(diào)用構(gòu)造函數(shù)時(shí)不必給出實(shí)參的構(gòu)造函數(shù),稱(chēng)為默認(rèn)構(gòu)造函數(shù)(default constructor)。顯然,無(wú)參的構(gòu)造函數(shù)屬于默認(rèn)構(gòu)造函數(shù)。一個(gè)類(lèi)只能有一個(gè)默認(rèn)構(gòu)造函數(shù)。
如果在建立對(duì)象時(shí)選用的是無(wú)參構(gòu)造函數(shù),應(yīng)注意正確書(shū)寫(xiě)定義對(duì)象的語(yǔ)句。
盡管在一個(gè)類(lèi)中可以包含多個(gè)構(gòu)造函數(shù),但是對(duì)于每一個(gè)對(duì)象來(lái)說(shuō),建立對(duì)象時(shí)只執(zhí)行其中一個(gè)構(gòu)造函數(shù),并非每個(gè)構(gòu)造函數(shù)都被執(zhí)行。

上一篇:C++運(yùn)算符重載規(guī)則詳解

欄    目:C語(yǔ)言

下一篇:詳解C++中的this指針與常對(duì)象

本文標(biāo)題:解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2711.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有