我在审查一些代码时遇到了类似的事情:
std::string mystring;
if (&mystring != NULL)
{
DoSomething();
}
这有什么意义吗?有人可以解释一下这个的一些用例吗?
最佳答案
不,在您展示的代码中,比较没有任何意义,并且总是计算为真。
我的疯狂猜测:
mystring
最初是一个char*
(可能是 c 代码)。- 有人盲目地将其重构为
std::string
。 - 这会导致编译器错误并使其停止,地址运算符就位。
编辑:
可能值得仔细查看 DoSomething
,以确定代码是否应该改为检查空字符串。但如果代码通过了所有测试,我会说,它更有可能被简单地删除。
关于c++ - 将字符串的地址与 NULL 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744601/