在 C++ 中,函数通常只能返回一个值。但是,可以通过引用参数、结构体、元组(C++11 及以后版本支持)等方式实现函数具有多个返回值的效果。以下是其中几种方法的实例:

1. 通过引用参数:

#include <iostream>

// 通过引用参数实现多个返回值
void multipleReturns(int a, int b, int& sum, int& product) {
    sum = a + b;
    product = a * b;
}

int main() {
    int x = 3, y = 4, resultSum, resultProduct;

    multipleReturns(x, y, resultSum, resultProduct);

    std::cout << "Sum: " << resultSum << std::endl;
    std::cout << "Product: " << resultProduct << std::endl;

    return 0;
}

2. 通过结构体:

#include <iostream>

// 使用结构体封装多个返回值
struct Result {
    int sum;
    int product;
};

// 返回结构体
Result multipleReturns(int a, int b) {
    Result result;
    result.sum = a + b;
    result.product = a * b;
    return result;
}

int main() {
    int x = 3, y = 4;

    Result result = multipleReturns(x, y);

    std::cout << "Sum: " << result.sum << std::endl;
    std::cout << "Product: " << result.product << std::endl;

    return 0;
}

3. 通过元组(C++11 及以后版本):

#include <iostream>
#include <tuple>

// 使用元组实现多个返回值(C++11 及以后版本)
std::tuple<int, int> multipleReturns(int a, int b) {
    return std::make_tuple(a + b, a * b);
}

int main() {
    int x = 3, y = 4;

    // 使用 std::tie 解包元组
    int resultSum, resultProduct;
    std::tie(resultSum, resultProduct) = multipleReturns(x, y);

    std::cout << "Sum: " << resultSum << std::endl;
    std::cout << "Product: " << resultProduct << std::endl;

    return 0;
}

这些方法都能够实现函数具有多个返回值的效果。选择其中一种方式取决于具体的需求和偏好。引用参数的方式简单直接,结构体可以更清晰地封装多个返回值,而元组则提供了一种更灵活的方式。