博客
关于我
函数提高
阅读量:515 次
发布时间:2019-03-07

本文共 2053 字,大约阅读时间需要 6 分钟。

C++函数默认参数与占位参数及函数重载

函数默认参数

在C++中,默认参数可以在函数的形以参数列表中指定。这意味着某些参数可以不需要在调用函数时显式指定,这使得代码更加简洁。然而,默认参数也带有一定的规则。

默认参数规则

  • 默认参数位置:如果某一个参数有默认值,则其后的所有参数也必须声明为默认参数。这意味着,参数列表中的默认值必须从左到右连续指定。此规则确保了函数调用的严格性。

  • 默认参数与实现:在函数声明中如果有默认参数,函数实现中的参数缺省情况必须与声明中一致。Otherwise, расходSky的函数行为可能会出现故障。

  • 示例

    #include 
    using namespace std;int func(int a, int b = 10, int c = 10) { return a + b + c;}int main() { cout << "ret = " << func(20, 20) << endl; cout << "ret = " << func(100) << endl; system("pause"); return 0;}

    在以上代码中,函数func的参数中bc都有默认值。在调用函数时,可以省略这些参数。而如果在声明中存在参数缺省,实现中必须让这些参数也具备缺省特性,否则会出现编译错误。


    函数占位参数

    在C++中,占位参数在函数的形参列表中使用,用于占位。当调用函数时,必须填补这些占位参数。占位参数的作用是让函数的参数可以在不影响函数行为的情况下,灵活地填充。

    占位参数规则

    • 占位参数必须由函数的调用者填充。无法通过函数内部进行默认值的赋值。
    • 占位参数必须按顺序填充,且占位参数之间不允许有其他类型的参数。

    示例

    #include 
    using namespace std;void func(int a, int) { cout << "this is func" << endl;}int main() { func(10, 10); system("pause"); return 0;}

    在以上代码中,函数func的第二个参数是一个占位参数(int)。在调用时,必须同时提供a和占位参数的值,否则无法编译。


    函数重载

    函数重载(Overloading)允许多个函数具有相同的函数名称,但在参数列表中有所不同。这样的机制让函数具有更高的复用性。

    函数重载条件

  • 作用域限制:所有重载函数必须在同一个作用域内。
  • 函数名称:函数名称必须完全相同。
  • 参数条件:参数列表中至少有一个参数的类型、数量或顺序与其他函数不同。
  • 注意事项

    • 函数重载不允许使用函数返回类型作为条件。
    • 当函数具有默认参数时,必须谨慎地使用重载函数,以避免因参数缺失而导致歧义。

    示例

    #include 
    using namespace std;void func() { cout << "func 的调用!" << endl;}void func(int a) { cout << "func (int a) 的调用!" << endl;}void func(double a) { cout << "func (double a) 的调用!" << endl;}void func(int a, double b) { cout << "func (int a ,double b) 的调用!" << endl;}void func(double a, int b) { cout << "func (double a ,int b) 的调用!" << endl;}int main() { func(); func(10); func(3.14); func(10, 3.14); func(3.14 , 10); system("pause"); return 0;}

    在上述代码中,每一个函数都具有不同的参数列表,因此可以实现函数重载。用户可以根据需要调用不同的函数版本,同时保持相同的函数名称。


    函数重载注意事项

  • 引用作为重载条件:引用类型可能会导致函数重载。例如:

    void func(int &a) {    cout << "func (int &a) 调用 " << endl;}void func(const int &a) {    cout << "func (const int &a) 调用 " << endl;}

    这两个函数具有相同的名称,但参数类型不同,允许函数重载。

  • 默认参数与函数重载:默认参数可能会导致函数签名冲突,影响函数重载的可行性。在设计功能时,必须确保默认参数和重载函数不会引起歧义。

  • 在实际编程中,需要特别关注这些注意事项,确保函数重载的正确性和代码的一致性。

    转载地址:http://bawnz.baihongyu.com/

    你可能感兴趣的文章
    Mysql join原理
    查看>>
    MySQL Join算法与调优白皮书(二)
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    mysql replace用法
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql server has gone away
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>
    MYSQL sql语句针对数据记录时间范围查询的效率对比
    查看>>
    mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
    查看>>
    mysql Timestamp时间隔了8小时
    查看>>
    Mysql tinyint(1)与tinyint(4)的区别
    查看>>