博客
关于我
函数提高
阅读量: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 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    MySQL 导出数据
    查看>>
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    MySQL 常见的 9 种优化方法
    查看>>
    MySQL 常见的开放性问题
    查看>>