简单地说:为什么C ++ 0X / C ++ 11标准中的nullptr
关键字是小写的,而它的紧密伴侣NULL
是大写的?我确实意识到这两者遵循不同的标准; nullptr
是关键字,而NULL
是宏。但是,由于它们将在类似的情况下使用,如果新用户遵循相同的约定,新的用户会不会更清楚?
(并不是很难记住 - 我只是对设计决定感到好奇。)
答案 0 :(得分:12)
NULL是一个宏,常见的惯例是宏是大写的,而nullptr
不是宏而是关键字,并且与所有其他关键字一样小。
但是因为它们会在类似的情况下使用,如果新用户遵循相同的惯例,那么它们是否更清楚呢?
混淆的潜在根源会发生变化,其他人会问为什么关键字是大写的(假设为NULLPTR
,因为null
会破坏语言的向后兼容性)
答案 1 :(得分:4)
小写绝对更适合C ++的一般命名约定。使用全部上限根本无法帮助新用户。
我不相信它对那些在C中使用NULL
而长大的旧用户实际上是有用的(或者是使用C ++用户的上限NULL
代替0
)。
当然,在这种情况下,我认为没有任何理由违反命名惯例。
答案 2 :(得分:3)
好的,我正在编辑原来的答案,因为我误解了这个问题。我将声称它是小写的,因为真假关键字是小写的。