几个开发人员,我想知道为什么:
std::cout<<std::time<<std::endl;
打印出一个值1。该值代表什么,以及为什么值为1。
答案: How to print function pointers with cout?
C ++标准指定:
4.12布尔转换
1算术,枚举,指针或成员指针的右值 类型可以转换为bool类型的右值。
匿名引用:
这是为函数指针指定的唯一转换。
编辑:以下答案很好地介绍了为什么打印1而不是仅打印任何布尔值的解决方案,并解释了何时不会出现1。
答案 0 :(得分:3)
指向非静态成员的指针没有指向的重载。 volatile或函数指针(带有签名的指针除外) (10-12)重载所接受)。尝试输出此类对象 调用隐式转换为bool,并且对于任何非null指针 值,则打印值1(除非设置了boolalpha,在这种情况下 则显示为true。
因此,您将函数指针std::time
转换为bool
,并且总是true
且没有boolalpha
将输出设置为1
。