我在Xcode中编写代码C ++代码。在一个实例中,我确保所有字段都有效。
SomeClass *myclass = new SomeClass();
std::string myString;
if ( (myClass) && (myString.c_str)) {
return true;
} else {
return false;
}
我应该检查testString.c_str
吗?这有道理吗?
答案 0 :(得分:1)
new()运算符的默认行为是返回新对象,或者在内存分配失败时抛出异常。因此,您不需要检查myClass
是否为NULL,除非您设置标志以更改行为或为您的类实现自己的new()运算符。
此外,myClass
周围的额外括号不是必需的。表达您想要检查的内容的更好方法是
if ((myClass != nullptr) &&
然后,您正在测试c_str()
类中方法std::string
的地址是否为NULL。我猜你不想做你想做的事
首先,您需要编写myString.c_str()
。然后,此方法永远不会返回NULL指针,它可以返回的是一个空C字符串。但是使用std::string::empty()
可以更好地测试,因此您的检查将如下所示:
if (myString.empty()) {
return false;
} else {
return true;
}
当然可以缩短为
return !myString.empty();
最后:如果你在函数/方法中有这个代码:谁删除你的新SomeClass对象?