gpt4 book ai didi

c++ - 为什么 C++ 不允许函数参数用于后一个参数的默认值?

转载 作者:可可西里 更新时间:2023-11-01 18:31:28 26 4
gpt4 key购买 nike

这是对 this question 的跟进. OP 问题中的代码对我来说看起来非常合理且明确。为什么 C++ 不允许使用前一个参数来定义后一个参数的默认值,如下所示:

int foo( int a, int b = a );

此外,至少在 C++11 中,声明的参数类型可用于确定返回类型,因此以类似方式使用函数参数并非闻所未闻:

auto bar( int a ) -> decltype( a );

那么问题来了:为什么上面的foo声明是不允许的?

最佳答案

一方面,这要求 ab 之前求值,但 C++(如 C)没有定义函数参数的求值顺序。

你仍然可以通过添加重载来获得你想要的效果:

int foo(int a, int b)
{ /* do something */ }

int foo(int a)
{ return foo(a, a); }

关于c++ - 为什么 C++ 不允许函数参数用于后一个参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com