最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年09月16日 18:18:11   投稿:goldensun  
這篇文章主要介紹了解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

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

和普通函數(shù)一樣,構(gòu)造函數(shù)中參數(shù)的值既可以通過(guò)實(shí)參傳遞,也可以指定為某些默認(rèn)值,即如果用戶不指定實(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ù),以便提供不同的初始化的方法,供用戶選用。這些構(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í)行。

相關(guān)文章

  • 一起聊聊C++中的智能指針

    一起聊聊C++中的智能指針

    C++?是手工管理內(nèi)存的分配和釋放,這給了程序員極大的自由度也給了我們極高的門(mén)檻,弄不好就得內(nèi)存泄露。使用智能指針能更好的管理堆內(nèi)存,本文主要給大家介紹一下c++的智能指針,需要的朋友可以參考下
    2022-07-07
  • C語(yǔ)言中scanf函數(shù)與空格回車(chē)的用法說(shuō)明

    C語(yǔ)言中scanf函數(shù)與空格回車(chē)的用法說(shuō)明

    這篇文章主要介紹了C語(yǔ)言中scanf函數(shù)與空格回車(chē)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • C++中實(shí)現(xiàn)多態(tài)有幾種方式小結(jié)

    C++中實(shí)現(xiàn)多態(tài)有幾種方式小結(jié)

    在C++中,多態(tài)是一種面向?qū)ο缶幊痰奶匦?允許以統(tǒng)一的方式處理不同類(lèi)型的對(duì)象,并根據(jù)實(shí)際對(duì)象的類(lèi)型來(lái)執(zhí)行相應(yīng)的操作,本文給大家介紹了C++中實(shí)現(xiàn)多態(tài)有幾種方式小結(jié),需要的朋友可以參考下
    2024-12-12
  • 詳解如何將Spire.Doc for C++集成到C++程序中

    詳解如何將Spire.Doc for C++集成到C++程序中

    Spire.Doc for C++是一個(gè)專(zhuān)業(yè)的Word庫(kù),供開(kāi)發(fā)人員在任何類(lèi)型的C++應(yīng)用程序中閱讀、創(chuàng)建、編輯、比較和轉(zhuǎn)換 Word 文檔,本文演示了如何以兩種不同的方式將 Spire.Doc for C++ 集成到您的 C++ 應(yīng)用程序中,希望對(duì)大家有所幫助
    2023-05-05
  • C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載

    C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載

    這篇文章主要介紹了C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C++11、C++14、C++17、C++20常用新特性

    C++11、C++14、C++17、C++20常用新特性

    本文主要介紹了C++11、C++14、C++17、C++20常用新特性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談Qt QGraphics體系及刷新機(jī)制介紹

    淺談Qt QGraphics體系及刷新機(jī)制介紹

    這篇文章主要介紹了淺談Qt QGraphics體系及刷新機(jī)制介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • C語(yǔ)言的模板與泛型編程你了解嗎

    C語(yǔ)言的模板與泛型編程你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的模板與泛型編程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 手把手教你實(shí)現(xiàn)一個(gè)C++單鏈表

    手把手教你實(shí)現(xiàn)一個(gè)C++單鏈表

    鏈表是一種數(shù)據(jù)結(jié)構(gòu),用于數(shù)據(jù)的存儲(chǔ)。這篇文章主要為大家介紹了如何實(shí)現(xiàn)一個(gè)C++單鏈表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-11-11

最新評(píng)論

绥德县| 郓城县| 遂平县| 淄博市| 黄梅县| 柞水县| 承德县| 汾西县| 澜沧| 贵南县| 宁晋县| 西乌珠穆沁旗| 吉林省| 孟村| 文化| 屏山县| 咸宁市| 杭锦后旗| 凌海市| 加查县| 太白县| 定安县| 济阳县| 临汾市| 炎陵县| 页游| 平原县| 寿阳县| 罗山县| 英吉沙县| 乐业县| 松原市| 荔浦县| 和静县| 蚌埠市| 凌源市| 桂东县| 西乡县| 绥芬河市| 蒲江县| 吴桥县|