如何用函数原型返回多个参数

时间:2015-10-16 10:31:43

标签: c++ function

定义只返回y参数,我只是学习函数原型

#include <iostream>
using namespace std;

    int doDateofBirth(int m , int d , int y);

    int main(){

        cout << "My DoB is, " << doDateofBirth(4,14,1998) << endl;


    }

    int doDateofBirth(int m,int d,int y){
        return m,d,y;
    }

4 个答案:

答案 0 :(得分:5)

您无法在C ++中返回多个对象。

return m,d,y;

使用逗号运算符来计算其左侧表达式,抛出其值,然后返回右侧表达式的值。在这种情况下,它与您编写的

相同
return y;

您可以创建一个类来表示日期,然后返回:

struct Date {
    //maybe add protection, constructors, methods, etc
    int month;
    int day;
    int year;
};

Date doDateOfBirth (const Date& something);

答案 1 :(得分:0)

要尽可能多地返回,请使用:boost::tuple表示C ++ 11及更新版

http://theboostcpplibraries.com/boost.tuple

答案 2 :(得分:0)

在C ++中,如果要返回多个变量,请考虑以下选项之一:

  • 将要返回的变量分组到结构或类中,取决于对象的大小,并将struct / class用作程序中的参数
  • 使用参考参数

根据您的示例,您可以使用引用变量选项:

原型

void doDateofBirth(int &m , int &d , &int y);

实现:

void doDateofBirth(int &m,int &d,int &y){
    // do your coding here
}

这是你调用函数的方法:     int月,日,年;     doDateOfBirth(月,日,年);

答案 3 :(得分:0)

通常当您觉得需要返回多个值时,这些值实际上代表了一个更大的整体,您应该用包含这些值的不同数据类型来表示。 E.g:

struct DateOfBirth
{
    const int month;
    const int day;
    const int year;
};

DateOfBirth doDateofBirth(int m, int d, int y){
    return { m, d, y };
}

doDateofBirth的行为与构造函数完全相同,所以我们将它作为构造函数:

struct DateOfBirth
{
    DateOfBirth(int m, int d, int y) : month(m), day(d), year(y) { } // constructor
    const int month;
    const int day;
    const int year;
};

然后可以这样使用:

int main()
{
    DateOfBirth mybd(666, 42, 69);
    printf("%d/%d/%d\n", mybd.year, mybd.month, mybd.day);
}