C++ 支持命名参数吗?

问题描述 投票:0回答:1

之前,我使用过Python。在 Python 中,我使用命名参数(关键字参数)进行函数调用。关于“命名参数”的维基百科页面表示 C++ 不支持此功能。 为什么C++不支持命名参数?未来版本的 C++ 标准会支持它吗?

c++ named-parameters
1个回答
74
投票
C++ 支持命名参数吗?

否,因为该功能尚未引入标准。该功能在 C 中也不存在(现在也不存在),而这正是 C++ 最初的基础。

未来版本的 C++ 标准会支持它吗?

为此编写了一份提案

。但这个提议被拒绝了。 C++ 中的一个基本问题是函数声明中的参数名称并不重要,并且以下程序是明确定义的:

void foo(int x, int y); void foo(int y, int x); // re-declaration of the same function void foo(int, int); // parameter names are optional void foo(int a, int b) {} // definition of the same function

如果语言中引入了命名参数,那么这里会传递哪些参数?

foo(x=42, b=42);

命名参数需要明显不同且向后不兼容的参数传递系统。

您可以使用类类型的单个参数来模拟命名参数:

struct args { int a = 42; float b = 3.14; }; void foo(args); // usage args a{}; a.b = 10.1; foo(a); // or in C++20 foo({.b = 10.1});

© www.soinside.com 2019 - 2024. All rights reserved.