博客
关于我
函数提高
阅读量: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-2019-4-21-复习
    查看>>
    mysql-5.6.17-win32免安装版配置
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>
    mysql-cluster 安装篇(1)---简介
    查看>>
    mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
    查看>>
    mysql-connector-java各种版本下载地址
    查看>>
    mysql-EXPLAIN
    查看>>
    MySQL-Explain的详解
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>