函数或成员函数中默认参数的所有可能类型的有效表达式是什么?
答案 0 :(得分:5)
在赋值给函数参数类型的变量的上下文中是正确的。
修改强>
编译期间的默认参数是根据类型正确性等进行评估的,但它们不会被计算,并且在运行时才会进行赋值。你可以指定一个尚未定义的类的构造函数作为默认参数,只要在函数使用点定义了类就可以了......实际的计算/赋值发生在函数调用期间,而不是在函数调用时功能声明/定义。
示例:强>
#include <iostream>
void foo( int a = std::rand())
{
std::cout << a << std::endl;
}
int main( void )
{
foo();
return( 0 );
}
1804289383
答案 1 :(得分:4)
这在C ++ 03标准的8.3.6节中有详细说明。它基本上等于任何不依赖于局部范围内任何东西的表达式,因此任何表达式依赖于局部变量,函数的参数或者&#34;这个&#34;被排除在外。