string s;
bool b[] = {s=="", s==s.c_str(), s.c_str()==""};
sets
b[] = {true, true, false};
为什么b [2]为假?
如果A == B并且A == C不应暗示B == C吗?
在此表达式中
s.c_str()==""
比较两个指针(地址)。第一个指针是s.c_str()
返回的指针,第二个指针是字符串文字""
的最远字符(确定为零字符)的指针。
很明显地址不同。
关于这两个表达式
s==""
和
s==s.c_str()
然后比较字符串,因为标准类std :: string重载了右操作数的运算符==。