默认函数参数的有效表达式
Valid expressions for default function arguments
函数
或成员函数中默认参数的有效表达式的所有可能类型是什么?
在赋值函数参数类型的变量的上下文中正确的任何内容。
编辑
编译期间的默认参数根据类型正确性等进行评估,但不会计算它们,并且在运行时之前不会进行赋值。您可以将尚未定义的类的构造函数指定为默认参数,只要在使用函数时定义了类就可以了......实际计算/赋值发生在函数调用期间,而不是在函数声明/定义点。
例:
#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"的表达式都被排除在外。
相关文章:
- void() 是一个有效的C++表达式吗?
- 为什么这个复合语句作为用大括号和括号括起来的语句序列似乎不是有效的语句表达式
- 仅当返回表达式有效时才启用模板
- 为什么这个C++折叠表达式有效?
- 检查字符串是否包含有效的后缀表达式
- 正则表达式C++如何搜索有效的 Linux 设备节点
- 正则表达式有效和无效的切换
- 仅查找第一个 std::正则表达式有效匹配
- 如何测试字符串是否是有效的C++(ish)表达式
- 有效文件夹名称C (Windows)的正则表达式
- 表达式块类型有效 // 堆栈溢出
- 如何正确测试我的后缀表达式是否有效
- 此表达式有效吗
- 在C++03中,在未赋值的上下文中使用表示非静态数据成员的id表达式有效吗
- 默认函数参数的有效表达式
- 将数组用作c++中有效的条件表达式
- 无效的正则表达式在Qt但在正则表达式教练这个相同的正则表达式是有效的
- QScriptEngine:错误表达式被认为是有效的
- 如何根据表达式在Boost.Hana中是否有效来过滤类型元组
- 是否有表达式为"C++11"的有效 C++11 程序?