为什么b [2]为假?

问题描述 投票:1回答:1
    string s;
    bool b[] = {s=="",  s==s.c_str(),  s.c_str()==""};

    b[] = {true, true, false};

为什么b [2]为假?

如果A == B并且A == C,那不应该意味着B == C吗?

c++ stdstring
1个回答
6
投票

在此表达式中

s.c_str()==""

比较两个指针(地址)。第一个指针是s.c_str()返回的指针,第二个指针是字符串文字""的最远字符(确定为零字符)的指针。

很明显,地址是不同的(还要记住,字符串文字具有静态存储持续时间)。

关于这两个表达式

s==""

s==s.c_str()

然后比较字符串,因为标准类std :: string重载了右操作数的运算符==。

© www.soinside.com 2019 - 2024. All rights reserved.