博客
关于我
函数提高
阅读量: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 deadlock found when trying to get lock暴力解决
    查看>>
    MuseTalk如何生成高质量视频(使用技巧)
    查看>>
    mutiplemap 总结
    查看>>
    MySQL DELETE 表别名问题
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>
    MVC 区域功能
    查看>>
    MySQL FEDERATED 提示
    查看>>
    mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
    查看>>
    Mysql group by
    查看>>
    MySQL I 有福啦,窗口函数大大提高了取数的效率!
    查看>>
    mysql id自动增长 初始值 Mysql重置auto_increment初始值
    查看>>
    MySQL in 太多过慢的 3 种解决方案
    查看>>
    MySQL InnoDB 三大文件日志,看完秒懂
    查看>>
    Mysql InnoDB 数据更新导致锁表
    查看>>
    Mysql Innodb 锁机制
    查看>>
    MySQL InnoDB中意向锁的作用及原理探
    查看>>
    MySQL InnoDB事务隔离级别与锁机制深入解析
    查看>>
    Mysql InnoDB存储引擎 —— 数据页
    查看>>
    Mysql InnoDB存储引擎中的checkpoint技术
    查看>>
    Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
    查看>>