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

今天翻看自己写的一篇博客,有关一条常见的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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值