首页 > 技术文章 > C++默认参数

Manual-Linux 2018-04-19 22:05 原文

#include <iostream>
#include <iomanip>
#include <windows.h>
#include <stdio.h>
#include <time.h>


using namespace std;


void weatherCast(string weather="pm2.5")  //含有默认参数的函数
{
    time_t t=time(0);
    char tmp[64];
    strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A ",localtime(&t) );
    cout<<tmp<<"today is weather "<<weather<<endl;


}

int main()
{
    cout<<"hello word"<<endl;
    weatherCast("sunshine");
    weatherCast();


    return 0;
}

多个参数时:

#include <iostream>
#include <iomanip>
#include <windows.h>
#include <stdio.h>
#include <time.h>


using namespace std;
/*
*Function:
*Description:求立方体的体积
*Input:
*Output:
*Return:
*Others:C++默认参数从右向左默认,中间不能跳跃
        实参的个数+默认参数的个数必须大于等于形参的个数
*/
int volume(int l,int w=3,int h=5)
{
    return l*w*h;
}

int main()
{
    cout<<volume(1)<<endl;
    return 0;
}

特殊情况

#include <iostream>
#include <iomanip>
#include <windows.h>
#include <stdio.h>
#include <time.h>


using namespace std;

//一个函数,不能既作重载,又作默认参数的函数。当你少写一个参数时,系统无法确认是重载还是默认参数
void print(int a)
{
    printf("void print(int a)");
}
void print(int a,int b=10)
{
    printf("void print(int a,int b=10)");
}

int main()
{
    print(10);
    return 0;
}

  这时编译器就会报错

 

推荐阅读