c++ - 为什么 C++ 不支持命名参数?

标签 c++ named-parameters

以前,我使用 Python。在 Python 中,我使用命名参数(关键字参数)进行函数调用。关于 named parameters 的维基百科页面告诉 C++ 不支持它。为什么 C++ 不支持命名参数?它会在 C++ 标准的 future 版本中支持它吗?

最佳答案

Why doesn't C++ support named parameters?

因为标准中还没有引入这样的功能。该功能在 C 中也不存在(也不存在),而这正是 C++ 最初的基础。

Will it support it in a future version of the C++ standard?

A proposal是为此而写的。但是这个提议被拒绝了。

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});

关于c++ - 为什么 C++ 不支持命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076786/

相关文章:

.net - 我可以在 ironpython 中使用命名参数和可选参数吗

c# - 在 C# : Why Does Out Parameter Need to be Named As Well? 中混用和命名参数

java - 如何从带有命名参数的语句构建一个带有填充值的 SQL 字符串?

methods - 我怎样才能拥有一个可以在 Groovy 中按名称覆盖的默认参数方法?

python - 命名参数可以与 Python 枚举一起使用吗?

c++ - 使用智能指针和继承构造函数的前向声明

c++ - 动态分配数组的矩阵乘法;结果不正确

c++ - 如何在 C++ 中实现字典 "with a Python tuple"作为键?

c++ - 如何获得给定 HWND 句柄的 PowerBuilder 图形对象?

c++ - 有没有办法反编译 Linux .so?