【发布时间】:2020-11-01 20:50:59
【问题描述】:
我的理解——而且我确定我即将学习——是 nullptr 被添加到 C++ 中,以形式化指针的零值意味着指针不指向有效对象的约定。是否有理由(或反对)添加相应的 nullchar 以正式约定 char 的零值意味着 char 不是有效字符,而是字符串的终止符?我可以看到这两种情况的一些共同点:
类型安全:0 可以有几种不同的类型,因此很容易错误地将非指针变量分配为零,而不是您想要的指针变量。如果你做对了,也很容易调用错误的重载函数。拥有一个特殊的强类型值可以防止这种错误,char 类型也可能如此。
表现力:将变量赋值为nullptr 可以让读者清楚地知道该变量是一个指针(因为只能将一个指针分配给该值)并且它不指向任何对象。将 char 分配给 nullchar 会增加同样的清晰度和可读性。
还有更多,但我相信你明白了。那么为什么我们有nullptr 而没有nullchar?
【问题讨论】:
-
有时
'\0'是一个有效字符。 -
'\0'是一个非常有趣的char。 -
如果你愿意,你可以自己做!将其放在您的“全局”标题之一中:
static inline constexpr char nullchar = '\0';. -
@Enrico 完全可以接受。
-
您能否在您的问题中举例说明为什么您认为 nullchar 是个好主意?我个人认为没有必要