【发布时间】:2020-04-11 20:04:06
【问题描述】:
我有一个旧代码 sn-p,如下所示:
const char *GetStr() const {
return ("");
}
我想知道这是否是一个有风险的代码,而不是返回一个全局字符指针,而是返回一个本地字符串文字? 例如,也许下面的代码 sn -p 更好。
const char *NullStr = "";
const char *GetStr() const {
return NullStr; // instead of ""
}
有什么优点/缺点?
甚至以下实现可能会更好:
const char *GetStr() const {
static const char * lNullStr = "";
return lNullStr;
}
【问题讨论】:
-
您使用的是 C++ 还是 C?
-
C++,但它是遗留代码的一部分,继承
-
如果你真的在编写 C++(我相信你确实考虑到了
const限定函数,即使对于遗留 C++ 代码也不要标记 C)那么你不应该对字符串使用原始指针首先。在我看来,这个函数的作者需要一个头脑来编写它,我一点也不谦虚。对于“现代”C++,还有返回optional 数据的替代方法。最后,如果确实需要指针,IMO 返回“null”的正确方法是空指针。
标签: c++ arrays pointers return