欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++默認參數(shù)與函數(shù)重載及注意事項

 更新時間:2020年03月04日 10:21:40   作者:alex_  
這篇文章主要介紹了C++默認參數(shù)與函數(shù)重載及注意事項包括語法與使用,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下

一、默認參數(shù)

在C++中,可以為參數(shù)指定默認值。在函數(shù)調(diào)用時沒有指定與形參相對應(yīng)的實參時, 就自動使用默認參數(shù)。

默認參數(shù)的語法與使用:

(1)在函數(shù)聲明或定義時,直接對參數(shù)賦值。這就是默認參數(shù);
(2)在函數(shù)調(diào)用時,省略部分或全部參數(shù)。這時可以用默認參數(shù)來代替。

注意:

(1)默認參數(shù)只可在函數(shù)聲明中設(shè)定一次。只有在沒有函數(shù)聲明時,才可以在函數(shù)定義中設(shè)定。(#add ,此句意為存在函數(shù)聲明和定義兩部分的時候。驗證表明有這個限制,可以隨便,但出于規(guī)范,在聲明中指定)
(2)如果一個參數(shù)設(shè)定了缺省值時,其右邊的參數(shù)都要有缺省值。(#add 這是定義時,類的成員函數(shù)的參數(shù)表在聲明時默認參數(shù)位于參數(shù)表右部, 使用時該怎樣待總結(jié))
如:int mal(int a, int b=3, int c=6, int d=8) 正確,按從右到左順序設(shè)定默認值。
int mal(int a=6, int b=3, int c=5, int d) 錯誤,未按照從右到左設(shè)定默認值。c設(shè)定缺省值了,而其右邊的d沒有缺省值。
(3)默認參數(shù)調(diào)用時,則遵循參數(shù)調(diào)用順序,自左到右逐個調(diào)用。這一點要與第(2)分清楚,不要混淆。(#add 神馬意思啊? 暫理解為兩個默認參數(shù)之間的參數(shù)必須賦缺省值, 錯,意為調(diào)用函數(shù)時,從左至右第一個實參即為第一個形參的實參,依此類推)
如:

void mal(int a, int b=3, int c=5); //默認參數(shù)
  mal(3, 8, 9 );//調(diào)用時有指定參數(shù),則不使用默認參數(shù)
   mal(3, 5);     //調(diào)用時只指定兩個參數(shù),按從左到右順序調(diào)用,相當于mal(3,5,5);
mal(3);     //調(diào)用時只指定1個參數(shù),按從左到右順序調(diào)用,相當于mal(5,3,5);
mal( );      //錯誤,因為a沒有默認值
mal(3, , 9)      //錯誤,應(yīng)按從左到右順序逐個調(diào)用
再如: void mal(int a=8, int b=3, int c=5); //默認參數(shù)
mal( ); //正確,調(diào)用所有默認參數(shù),相當于mal(8,3,5);

(4)默認值可以是全局變量、全局常量,甚至是一個函數(shù)。但不可以是局部變量。因為默認參數(shù)的調(diào)用是在編譯時確定的,而局部變量位置與默認值在編譯時無法確定。

二、函數(shù)重載

在相同的聲明域中,函數(shù)名相同,而參數(shù)表不同。通過函數(shù)的參數(shù)表而唯一標識并且來區(qū)分函數(shù)的一種特殊的函數(shù)用法。

參數(shù)表的不同表現(xiàn)為:

1、參數(shù)類型不同;
2、參數(shù)個數(shù)不同;

特別注意:返回類型不同不可以作為函數(shù)重載的標識。

函數(shù)重載的注意事項

1、函數(shù)的形參必須不同,或者個數(shù)不同,或者類型不同,不能夠只依靠函數(shù)的返回值類型不同或形參變量名不同來實現(xiàn)函數(shù)重載。
2、不要將不同功能的函數(shù)定義為重載函數(shù),以免出現(xiàn)對調(diào)用結(jié)果的誤解。如:

int add(int x,int y)

{

return x+y;

}

float add(float x,float y)

{

return x-y;

}

重載函數(shù)與默認參數(shù)重疊導(dǎo)致的二義性問題:

func(int); //重載函數(shù)1,只有1個參數(shù),無默認參數(shù)
func(int, int =4); //重載函數(shù)2,有2個參數(shù),有1個默認參數(shù)
func(int a=3, int b=4, int c=6); //重載函數(shù)3,有3個參數(shù),有3個默認參數(shù)
fucn(float a=3.0, float b=4.0 float c=5.0); //重載函數(shù)4,有3個參數(shù),有3個默認參數(shù)
fucn(float a=3.0, float b=4.0 float c=5.0 float d=7.9 ); //重載函數(shù)5,有4個參數(shù),有4個默認參數(shù)

func(2); //可調(diào)用前3個函數(shù),出現(xiàn)二義性
func(2.0); //可調(diào)用后2個函數(shù),出現(xiàn)二義性

所以當重載函數(shù)與默認參數(shù)共同使用時,要注意出現(xiàn)二義性問題。

總結(jié)

到此這篇關(guān)于C++默認參數(shù)與函數(shù)重載及注意事項的文章就介紹到這了,更多相關(guān)C++默認參數(shù) 函數(shù)重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++下程序運行時間的四種常用計時方法總結(jié)

    C++下程序運行時間的四種常用計時方法總結(jié)

    這篇文章主要介紹了C++下程序運行時間的四種常用計時方法,介紹了幾種常用的計時方法,包括低精度的clock()和GetTickCount(),以及高精度的gettimeofday()和QueryPerformanceCounter(),需要的朋友可以參考下
    2024-09-09
  • 數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)

    數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言編程中對目錄進行基本的打開關(guān)閉和讀取操作詳解

    C語言編程中對目錄進行基本的打開關(guān)閉和讀取操作詳解

    這篇文章主要介紹了C語言編程中對目錄進行基本的打開關(guān)閉和讀取操作,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C語言實現(xiàn)掃雷小游戲(擴展版)

    C語言實現(xiàn)掃雷小游戲(擴展版)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)擴展版的掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++List容器常用函數(shù)接口刨析

    C++List容器常用函數(shù)接口刨析

    最近我學(xué)習(xí)了C++中的STL庫中的list容器,對于常用容器,我們不僅要會使用其常用的函數(shù)接口,我們還有明白這些接口在其底層是如何實現(xiàn)的。所以特意整理出來一篇博客供我們學(xué)習(xí)
    2022-08-08
  • QT判斷兩個日期時間的大小

    QT判斷兩個日期時間的大小

    本文主要介紹了QT判斷兩個日期時間的大小,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C語言?分析逆序字符串與字符串的逆序輸出有什么區(qū)別

    C語言?分析逆序字符串與字符串的逆序輸出有什么區(qū)別

    例如,給定一個字符串?s,將?s?中的字符順序顛倒過來,如?s?=?“abcd”,逆序后變成?“dcba”??梢圆捎枚喾N方法對字符串進行逆序,以下將對其中的方法和字符串的逆序輸出的區(qū)別進行分析
    2022-04-04
  • FFmpeg實現(xiàn)多線程編碼并保存mp4文件

    FFmpeg實現(xiàn)多線程編碼并保存mp4文件

    這篇文章主要為大家介紹了FFmpeg如何持續(xù)的從指定內(nèi)存中讀取原始數(shù)據(jù),再將解碼數(shù)據(jù)存入隊列中,并通過單獨的線程進行編碼,最后保存為mp4文件,感興趣的可以了解下
    2023-08-08
  • 一篇文章帶你了解C語言內(nèi)存對齊解決的問題

    一篇文章帶你了解C語言內(nèi)存對齊解決的問題

    內(nèi)存對齊的目的是為了提高CPU讀寫內(nèi)存里數(shù)據(jù)的速度?,F(xiàn)代的CPU讀取內(nèi)存并不是一個一個字節(jié)挨著讀取,這樣做的效率非常低?,F(xiàn)代的CPU一般以4個字節(jié)(32bit數(shù)據(jù)總線)或者8個字節(jié)(64bit數(shù)據(jù)總線)為一組,一組一組地讀寫內(nèi)存里的數(shù)據(jù)
    2021-08-08
  • 可能是全網(wǎng)最詳細的Qt連接MySQL數(shù)據(jù)庫教程

    可能是全網(wǎng)最詳細的Qt連接MySQL數(shù)據(jù)庫教程

    QT眾所周知是一個開源的,以C++為底層的可視化工具庫,下面這篇文章主要給大家介紹了關(guān)于最詳細的Qt連接MySQL數(shù)據(jù)庫教程的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04

最新評論