C++中函数参数的默认值
生活随笔
收集整理的這篇文章主要介紹了
C++中函数参数的默认值
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1 C++中函數(shù)參數(shù)的默認(rèn)值
- 1.1 C++中函數(shù)參數(shù)的默認(rèn)值
- 1.2 函數(shù)默認(rèn)參數(shù)的規(guī)則
- 2 函數(shù)占位參數(shù)
- 2.1 函數(shù)占位參數(shù)
- 2.2 函數(shù)占位參數(shù)的意義
1 C++中函數(shù)參數(shù)的默認(rèn)值
1.1 C++中函數(shù)參數(shù)的默認(rèn)值
對于C++中函數(shù)參數(shù)的默認(rèn)值:
- C++中可以在函數(shù)聲明時為參數(shù)提供一個默認(rèn)值。
- 當(dāng)函數(shù)調(diào)用時沒有提供參數(shù)的值,則使用默認(rèn)值。
注意: 參數(shù)的默認(rèn)值必須在函數(shù)聲明中指定,不能在定義中指定,否則編譯報錯。
問題:函數(shù)定義中是否可以出現(xiàn)參數(shù)的默認(rèn)值?當(dāng)函數(shù)聲明和定義中的默認(rèn)值不同時是否會發(fā)生錯誤?
如上直接編譯錯誤。
實例分析:默認(rèn)參數(shù)值初探
#include <stdio.h>int mul(int x = 0);int main(int argc, char *argv[]) {printf("%d\n", mul());printf("%d\n", mul(-1));printf("%d\n", mul(2));return 0; }int mul(int x) {return x * x; }/* 第一種情況:當(dāng)聲明和定義的默認(rèn)值不同時error: default argument given for parameter 1 of ‘void fun(int)’ error: after previous specification in ‘void fun(int)’void fun(int x = 555);*//* 第二種情況:當(dāng)聲明中無默認(rèn)值,而定義中有默認(rèn)值 此時調(diào)用函數(shù)必須按相應(yīng)參數(shù)進(jìn)行傳參,否則會報錯。并且定義時的默認(rèn)值并不會起作用,這是種沒有意義的做法,雖然編譯通過了。*//* 第三種情況:聲明和定義時均給出了默認(rèn)值,則直接編譯錯誤。 */1.2 函數(shù)默認(rèn)參數(shù)的規(guī)則
函數(shù)默認(rèn)參數(shù)的規(guī)則:
- 參數(shù)的默認(rèn)值必須從右向左提供,設(shè)計函數(shù)時使用什么樣的默認(rèn)值;
- 函數(shù)調(diào)用時使用了默認(rèn)值,則后續(xù)參數(shù)必須使用默認(rèn)值,即參數(shù)調(diào)用時參數(shù)匹配從左到右。
編程實驗:默認(rèn)參數(shù)的錯誤示例
#include <stdio.h>int add(int x, int y = 0, int z = 0);int main(int argc, char *argv[]) {printf("%d\n", add(1));printf("%d\n", add(1, 2));printf("%d\n", add(1, 2, 3));return 0; }int add(int x, int y, int z) {return x + y + z; }/* 不正確聲明 default argument missing for parameter 2 of ‘void fun(int, int, int)’void fun(int x = 555, int y, int z = 12); */2 函數(shù)占位參數(shù)
2.1 函數(shù)占位參數(shù)
函數(shù)占位參數(shù):
- 在C++中可以為函數(shù)提供占位參數(shù)。
- 占位參數(shù)只有參數(shù)類型聲明,而沒有參數(shù)名聲明。
- 一般情況下,在函數(shù)體內(nèi)部無法使用占位參數(shù)。
2.2 函數(shù)占位參數(shù)的意義
主要意義如下:
- 占位參數(shù)與默認(rèn)參數(shù)結(jié)合起來使用;
- 兼容C語言程序中可能出現(xiàn)的不規(guī)范寫法。
問題:下面的兩種聲明方式等價嗎?
void fun(); <-> void fun(void);
(C語言中不等價,不寫void意味著接收任意的參數(shù),寫void意味著不接收任何參數(shù);C++中等價,都意味著不接收任何參數(shù))
編程實驗:占位參數(shù)與默認(rèn)參數(shù)值
#include <stdio.h>int func(int x, int = 0);int main(int argc, char *argv[]) {printf("%d\n", func(1));printf("%d\n", func(2, 3));return 0; }int func(int x, int) {return x; }示例代碼:占位符與默認(rèn)參數(shù)結(jié)合起來使用
#include<stdio.h>void fun(int = 0, int = 0);int main(void) {fun(1,2);fun();return 0; }void fun(int, int) {}參考資料:
總結(jié)
以上是生活随笔為你收集整理的C++中函数参数的默认值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 按钮button的常用属性和事件
- 下一篇: 建模的常用手段:组合与聚合