C++输出时指针类型自动转换为bool类型输出的一个小疑问

本文探讨了C++中指针作为cout输出参数时,为何某些情况下会被自动转换为bool类型输出,特别是针对成员函数指针的情况。通过实例代码展示了编译器在面对重载函数地址时的困惑,指出只有明确类型时,编译器才能正确输出。同时,文章提出了对于指针术语使用的精确性建议。
摘要由CSDN通过智能技术生成

今天翻看自己写的一篇博客,有关一条常见的const_cast转换的“BUG”解释 ,那篇博客最后留了一个疑问,为什么cout << &a 之后,输出的是1?(a为volatile const int类型)

当时猜想编译器把&a当做bool类型输出了,具体原因不清楚,当时也没在意。


今天翻看string类型的size函数和length函数的区别(详情参见string类的size与length的区别),原博主中记载,定义string类型的变量s,若使用cout输出s.size或s.length,则会调用ostream& operator < <(ostream&, bool)重载操作符,导致将该函数地址按bool类型变量输出。但该博主也未解释情况。

但同时还有人表示,cout<<s.at 则会报错。这究竟是为什么呢?


将上述论述写一个小程序验证(VC6.0中运行):

#include <iostream>
#include <string>
using namespace std;
int main()
{
    s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值