zoukankan      html  css  js  c++  java
  • 【C++基础之十四】函参的缺省

    可能会有这么一个函数,在大部分的情况下,我们不用给它传递参数,但在某些特殊情况下,我们需要给它传递参数,那怎么办呢?

    简单啊,写两个一样的方法,一个带参,一个不带参。。。

    这样也太没水准了。来点高端的。。。函数的缺省!

    函数的缺省,在编译的时候,默认参数由编译器自动插入。这里主要要注意两点。


    1.缺省值只能出现在声明中,而不能出现在定义里

    void foo(int a=0);//这是声明
    
    void foo(int a)//这是定义
    {
    	cout<<a<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	foo();//无参调用
    	foo(1);//带参调用
    	return 0;
    }

    2.多个参数时,参数只能由后往前缺省。

    正确:

    void foo(int a,int b,int c=0);
    
    void foo(int a,int b,int c)
    {
    	cout<<a<<endl;
    	cout<<b<<endl;
    	cout<<c<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	foo(0,1);
    	foo(0,1,2);
    	return 0;
    }

    错误:产生二义性,编译时出错,提示error C2548: “foo”: 缺少参数 3 的默认参数

    void foo(int a,int b=0,int c);
    
    void foo(int a,int b,int c)
    {
    	cout<<a<<endl;
    	cout<<b<<endl;
    	cout<<c<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	foo(0,1);
    	foo(0,1,2);
    	return 0;
    }

    这个比较简单,就这样吧。


  • 相关阅读:
    SQL*PLUS命令的使用大全
    Oracle总结
    SQL*PLUS命令的使用大全
    Java经典面试题
    学习Java的30个基本概念
    Java经典面试题
    学习Java的30个基本概念
    Oracle总结
    ORACLE大数据量下的分页解决方法
    XAMPP修改80和443端口及创建虚拟目录
  • 原文地址:https://www.cnblogs.com/riskyer/p/3339526.html
Copyright © 2011-2022 走看看