首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c++中使用命名参数

如何在c++中使用命名参数
EN

Stack Overflow用户
提问于 2021-09-04 18:27:33
回答 3查看 710关注 0票数 0

在python中,我们可以使用参数名将参数传递给被调用的函数,比如在下面的代码中,我们如何做相同的事情-- C++,我需要这样做,因为如果我们有太多的参数,很容易弄乱被调用函数和调用函数中传递的参数的位置。

代码语言:javascript
运行
复制
def calendar(year,month,day):
    return "f{day}:{month}:{year}"
print(calendar(day=4,year=2021,month=9) #here arguments are passed in order of day,year and month  

使用命名参数定义函数时,输出"4:9:2021",而不按传递的顺序传递参数

代码语言:javascript
运行
复制
string calendar(int year,int month,int day)
{
    return year,month,day;
}

int main ()
{       
cout<<calendar(" ? ");// How can we pass arguments like that of python in c++
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-04 18:43:40

C和C++都不支持命名参数。

最接近这一点的是定义一个包含所有参数的struct

代码语言:javascript
运行
复制
struct cal_params {
    int year;
    int month;
    int day;
};

定义要接受该结构实例的函数:

代码语言:javascript
运行
复制
char *calendar(struct cal_params params)
{
    ...
}

然后使用指定的初始化器使用复合文字调用函数:

代码语言:javascript
运行
复制
char *str = calendar((struct cal_params){ .year=2021, .month=9, .day=4});
票数 7
EN

Stack Overflow用户

发布于 2021-09-05 03:28:40

在C++20中,添加了指定的初始化器,但是初始化必须按照声明的顺序排列

代码语言:javascript
运行
复制
struct date_t {
  int year, month, day;
};

std::string make_calendar(date_t date) {
  return std::format("{0}:{1}:{2}", date.year, date.month, date.day);
}

然后,你可以这样称呼它:

代码语言:javascript
运行
复制
make_calendar({.year = 2001, .month = 9, .day = 4})
票数 3
EN

Stack Overflow用户

发布于 2021-09-04 23:42:22

C++没有这个特性。如this answer所示,您可以通过命名结构的成员来模拟它。或者,您可以命名参数的各个类型:

代码语言:javascript
运行
复制
#include <string>
#include <iostream>

struct Year { int value; };
struct Month { int value; };
struct Day { int value; };

std::string calendar(Year y,Month m,Day d)
{
    return std::to_string(y.value) + "-" + std::to_string(m.value) + "-" + std::to_string(d.value);
}

int main ()
{       
    std::cout<<calendar(Year{2001},Month{31},Day{42});
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69057971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档