默认函数参数的有效表达式

Valid expressions for default function arguments

本文关键字:有效 表达式 参数 函数 默认      更新时间:2023-10-16
函数

或成员函数中默认参数的有效表达式的所有可能类型是什么?

在赋值函数参数类型的变量的上下文中正确的任何内容。

编辑
编译期间的默认参数根据类型正确性等进行评估,但不会计算它们,并且在运行时之前不会进行赋值。您可以将尚未定义的类的构造函数指定为默认参数,只要在使用函数时定义了类就可以了......实际计算/赋值发生在函数调用期间,而不是在函数声明/定义点。

例:

#include <iostream>
void foo( int a = std::rand())
{
  std::cout << a << std::endl;
}
int main( void )
{
 foo();
 return( 0 );
}

ideone.com 上的程序输出:

1804289383

这在 C++03 标准的第 8.3.6 节中有详细说明。 它基本上相当于任何不依赖于局部范围中的任何表达式,因此任何依赖于局部变量、函数参数或"this"的表达式都被排除在外。