主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

C++ 面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

C++ 高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

C++ 多参数函数


上一章 下一章

一、C++ 中的多参数函数描述

C++ 中的多参数函数描述了函数接受多个参数的能力,或者说具有多个参数的函数可以使用多个输入执行操作。这一特性使得函数能够同时处理多个数据子集,从而执行更复杂的操作。

语法

在 C++ 中,可以通过在函数声明和定义中列出参数并用逗号分隔来定义带有多个参数的函数。基本语法如下:

return_type function_name(param1_type param1_name, param2_type param2_name, ...);

其中,

param1_type 和 param1_name 分别是参数类型(如 int, char, bool, string)及其名称,类似地 param2_type(如 int, char, bool, string)和 param2_name 分别是参数类型及其名称,依此类推。

多参数函数的数据类型

有 2 种向多个函数参数传递数据的方式,如下所述:

  1. 单一数据类型多个参数 所有参数都为相同数据类型的函数。

    示例

    #include <iostream>
    using namespace std;

    // 带有相同数据类型(int)的多个参数的函数
    void sum(int a, int b, int c) {
       cout << "Sum: " << (a + b + c) << endl;
    }

    int main() {
       sum(1, 2, 3); 
       return 0;
    }

    输出

    Sum: 6
  2. 多种数据类型多个参数 参数可以有不同的数据类型的函数。

    示例

    #include <iostream>
    using namespace std;

    // 带有不同的数据类型的参数的函数
    void getInfo(string name, int age, double height) {
       cout << name << " is " << age << " years old and " << height << " meters tall." << endl;
    }

    int main() {
       getInfo("Aman", 26, 1.78);
       getInfo("Naman", 32, 1.65);
       return 0;
    }

    输出

    Aman is 26 years old and 1.78 meters tall.
    Naman is 32 years old and 1.65 meters tall.

二、多参数传递技术

在 C++ 中,多参数(或单参数)传递技术指的是用于将参数传递给函数的方法。这些技术定义了数据在函数内部的传输和操作方式。以下讨论几种主要的技术:

  1. 值传递 在值传递中,实际参数值的一个副本被传递给函数。在函数内对参数所做的更改不会影响原始参数。这种方式安全简单,但对于大型数据结构来说由于复制而效率较低。

  2. 引用传递 此方法将实际参数的引用传递给函数,允许函数修改原始参数。函数操作的是原始数据而不是副本。这种方式效率较高,因为它避免了复制,但在处理时需要小心以避免意外修改。

  3. 可变类型 vs 不可变类型

    • 可变类型:实例创建后可以修改的类型。
    • 不可变类型:实例创建后无法更改的类型。 列表、字典和集合是常见的可变类型。整数、字符串和元组是常见的不可变类型。

三、多参数函数的类型

在 C++ 中,函数可以接受多个参数,并且这些参数可以根据不同方式进行分类。以下是 C++ 中不同类型多参数函数的分解:

  1. 固定数量的参数 拥有固定数量参数的函数,即其输入参数的数量是具体且不变的。

    示例

    #include <iostream>
    using namespace std;

    // 带有固定数量参数的函数
    void getDetails(int age, double height, const string& name) {
       cout << "Name: " << name << ", Age: " << age << ", Height: " << height << endl;
    }

    int main() {
       getDetails(25, 5.6, "Sam");
       return 0;
    }

    输出

    Name: Sam, Age: 25, Height: 5.6
  2. 可变数量的参数 可以接受可变数量参数或参数的函数。这通常通过变长函数或模板参数包实现。

    示例

    #include <iostream>
    using namespace std;

    // 变长模板函数
    template<typename... Args>
    void printNumbers(Args... args) 
    {
       (cout << ... << args) << endl;
    }

    int main() {
       printNumbers(1, 2, 3); 
       // Outputs: 123
       printNumbers(4, 5, 6, 7, 8); 
       // Outputs: 45678
       return 0;
    }

    输出

    123
    45678
  3. 默认参数 默认参数是指那些具有默认值的参数,当调用函数时可以省略这些参数。如果没有为这些参数提供参数,则函数使用默认值。

    示例

    #include <iostream>
    using namespace std;

    // 带有默认参数的函数
    void greet(const string& name = "Guest", int age = 0) {
       cout << "Hello, " << name;
       if (age > 0) {
          cout << ". You are " << age << " years old.";
       }
       cout << endl;
    }

    int main() {
       greet();                // Outputs: Hello, Guest
       greet("Alice");         // Outputs: Hello, Alice
       greet("Bob", 30);       // Outputs: Hello, Bob. You are 30 years old.
       return 0;
    }

    输出

    Hello, Guest
    Hello, Alice
    Hello, Bob. You are 30 years old.
  4. 命名参数(C++ 特性) 尽管 C++ 直接不支持命名参数,但你可以使用类或结构体来封装参数以达到类似的功能。

    示例

    #include <iostream>
    using namespace std;

    // 结构体封装参数
    struct Person {
       string name;
       int age;
       double height;
    };

    // 接受参数对象的函数
    void printPerson(const Person& p) {
       cout << "Name: " << p.name << ", Age: " << p.age << ", Height: " << p.height << endl;
    }

    int main() {
       Person alice = {"Alice", 25, 5.9};
       printPerson(alice);
       return 0;
    }

    输出

    Name: Alice, Age: 25, Height: 5.9
  5. 参数对象 单个参数为复杂类型(如类或结构体),封装多个相关值。

    示例

    #include <iostream>
    using namespace std;

    // 类封装多个参数
    class Rectangle {
       public:
          int width;
          int height;
          Rectangle(int w, int h) : width(w), height(h) {}
    };

    // 接受参数对象的函数
    void calculateArea(const Rectangle& rect) {
       cout << "Area: " << (rect.width * rect.height) << endl;
    }

    int main() {
       Rectangle rect(10, 5);
       calculateArea(rect);  // Outputs: Area: 50
       return 0;
    }

    输出

    Area: 50
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图