Pep*_*nds 0 c++ null stdstring
我之前对这个问题有不同的答案,所以决定再问这里.
假设我有一个功能node* foo(),如果有一些失败,我做return NULL.这段代码真的返回NULL指针吗?或者这NULL是一个local temporary object?编译时我没有警告.我还可以写下这样的东西:
node* ptr = foo();
if (ptr)
printf("Not NULL");
else
printf("NULL");
Run Code Online (Sandbox Code Playgroud)
它似乎有效.(但如果这个功能是,例如const string& foo()它没有)
Gya*_*ain 11
NULL 是一个指针文字,定义为包含一个特殊值.
一个可能的定义是:
#define NULL ((void *)0)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请阅读此常见问题解答
关于const string& foo(),我相信你的意思是C++的std::string.
的std :: string有没有隐含的构造与NULL指针进行初始化.因此,您应该使用一些异常或空字符串来向调用者指示错误.(如果你没有抛出,你必须返回一个std::string.即使返回的对象是本地的,当它保存在局部常量引用中时它的寿命会延长.但返回其他类型并期望隐式转换不是一个好主意.)
回答你的问题:因为NULL是文字,所以大部分时间都不能创建临时对象,实际值可以直接返回给调用者.