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

Emi*_*ier 5 c++ c++-faq

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

lap*_*apk 5

在赋值给函数参数类型变量的上下文中是正确的.

编辑
编译期间的默认参数根据类型正确性等进行评估,但不会计算它们,也不会在运行时进行任何分配.你可以指定一个尚未定义的类的构造函数作为默认参数,只要在函数使用点定义了类就可以了......实际的计算/赋值发生在函数调用期间,而不是在函数调用时功能声明/定义.

例:

#include <iostream>

void foo( int a = std::rand())
{
  std::cout << a << std::endl;
}

int main( void )
{
 foo();

 return( 0 );
}
Run Code Online (Sandbox Code Playgroud)

ideone.com上的程序输出:

1804289383