typedef的用途大家都是很熟悉的了,遇到很長(zhǎng)的標(biāo)識(shí)又不便閱讀和表示的時(shí)候,就可以
重新定義更有閱讀性和表現(xiàn)力的標(biāo)識(shí)。那么,typedef是不是就像險(xiǎn)惡的宏替換呢?開始我也
是這么認(rèn)為的,直到看到一個(gè)例子。
1 typedef const* constPointer
2 int constPointer pSomeThing;
現(xiàn)在的問題是,指針pSomeThing是一個(gè)常指針呢,還是一個(gè)指向一個(gè)常量的可變指針?
答案可能會(huì)出乎一般人的意料。因?yàn)槿绻皇前凑瘴谋咎鎿Q的語義,pSomeThing應(yīng)該是一個(gè)
指向一個(gè)int常量的指針。可是實(shí)際上它是一個(gè)常指針,指向的int量的值是可變的。
這就是typedef和宏不同的地方。它在定義新的標(biāo)識(shí)的時(shí)候,并不深入標(biāo)識(shí)的內(nèi)部判斷,
而是整個(gè)標(biāo)識(shí)作為一個(gè)整體表達(dá)語義,因此,constPointer表達(dá)的是“常指針”的語義,const
限定符作用于指針之上。就是這么簡(jiǎn)單。
posted on 2010-01-20 09:44
Leix 閱讀(335)
評(píng)論(0) 編輯 收藏 引用