3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
有一些論點(diǎn)(其中一個(gè)是相對(duì)較新的),我認(rèn)為這與Bjarne的立場(chǎng)相矛盾。
意圖文件
使用NULL
允許搜索它的使用,它還強(qiáng)調(diào)開發(fā)人員想要使用NULL
指針,無論編譯器是否正在解釋它NULL
。
指針和'int'的重載相對(duì)較少
每個(gè)人引用的例子是:
void foo(int*);void foo (int);void bar() { foo (NULL); // Calls 'foo(int)'}
但是,至少在我看來,上面的問題并不是我們對(duì)空指針常量使用NULL,而是我們有'foo'的重載,它們采用了不同類型的參數(shù)。參數(shù)也必須是一個(gè)int
,因?yàn)槿魏纹渌愋投紩?huì)導(dǎo)致模糊調(diào)用,因此生成一個(gè)有用的編譯器警告。
分析工具可以幫助今天!
即使在沒有C ++ 0x的情況下,現(xiàn)在還有一些工具可以驗(yàn)證是否NULL
用于指針,并且0
用于整數(shù)類型。
C ++ 11將有一個(gè)新
std::nullptr_t
類型。
這是該表的最新參數(shù)。C ++ 0x 的問題0
和NULL
正在積極解決,你可以保證,對(duì)于提供的每個(gè)實(shí)現(xiàn)NULL
,他們將要做的第一件事是:
#define NULL nullptr
對(duì)于那些誰(shuí)使用NULL
,而不是0
,這種變化將在很少或根本沒有力氣類型安全性的提高-如果有的話,還可以趕上他們已經(jīng)使用了一些錯(cuò)誤NULL
的0
。對(duì)于0
今天使用的任何人......呃......希望他們對(duì)正則表達(dá)有很好的了解......

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
我很久以前就停止使用NULL(和大多數(shù)其他宏一樣)。我這樣做不僅是因?yàn)槲蚁氡M可能地避免使用宏,而且因?yàn)镹ULL似乎已經(jīng)在C和C ++代碼中被過度使用了。它似乎只在需要0值時(shí)使用,而不僅僅是指針。
在新項(xiàng)目中,我將其放在項(xiàng)目標(biāo)題中:
static const int nullptr = 0;
現(xiàn)在,當(dāng)符合C ++ 0x的編譯器到達(dá)時(shí),我所要做的就是刪除該行。這樣做的一個(gè)很好的好處是Visual Studio已經(jīng)將nullptr識(shí)別為關(guān)鍵字并適當(dāng)?shù)赝怀鲲@示它。
- 3 回答
- 0 關(guān)注
- 715 瀏覽
添加回答
舉報(bào)