2011-12-31 26 views
1

簡單地說:爲什麼C++ 0X/C++ 11標準中的nullptr關鍵字是小寫字母,而其密切伴侶NULL是大寫字母?我確實意識到兩者遵循不同的標準; nullptr是一個關鍵字,而NULL是一個宏。但是由於它們將用於類似的情況,如果他們遵循相同的慣例,新用戶會不會更清楚?爲什麼C++ 11中的nullptr小寫?

(不,它是太多的麻煩要記住 - 我只是好奇的設計決定)

+12

您已回答了您的問題。一個是關鍵字,另一個是宏。 – Mat 2011-12-31 13:50:26

+1

我不知道,它需要比'nullptr'清楚多少? 'NULL_POINTER'? :) – jrok 2011-12-31 13:50:44

+2

@jrok'POINTER_WHOSE_VALUE_IS_ZERO' – 2011-12-31 13:51:59

回答

4

小寫明顯符合C++的一般命名約定。使用全部大寫不會幫助完全幫助用戶。

而且我不認爲它實際上是所有有助於與誰通過在C NULL長大了(或正在誰使用NULL代替0 C++用戶的上限)的用戶。

當然,在這種情況下,我沒有看到任何違背命名約定的理由。

12

NULL是一個宏,一個共同的約定是,宏是大寫,而nullptr不一個宏,但是一個關鍵字,與其他所有關鍵字一樣小寫。

但是,由於它們將用於類似的情況,如果他們遵循相同的約定,新用戶會不會更清楚?

混亂的潛在來源將改變,別人會問,爲什麼一個關鍵字(假設NULLPTR,作爲null將打破語言向後兼容)

3

好吧,我編輯我原來的答覆大寫因爲我誤解了這個問題。由於相同的原因,真假關鍵字是小寫字母,我將聲明它是小寫字母。

+5

'nullptr'不是一個類型,而是一個關鍵字,'nullptr_t'是類型。 – 2011-12-31 13:52:21

+0

呃!是的,我正在讀它作爲_t和意義_t。我現在閉嘴。 – Spencer 2011-12-31 13:55:46

+0

@SpencerWinger,歡迎來到Stack Overflow!請注意,您可以編輯您的答案以使其正確。這樣你就可以避免不必要的讚譽,並最終可以獲得讚譽和聲譽。 – avakar 2011-12-31 14:17:45

相關問題