在typedef中使用指針往往會(huì)帶來(lái)意外的結(jié)果。假設(shè)給出以下語(yǔ)句:
typedef string *pstring;
const pstring cstr;
請(qǐng)問(wèn)cstr 變量是什么類型?很多人都認(rèn)為真正的類型是:
const string *cstr; // wrong interpretation of const pstringcstr
也就是說(shuō),const pstring 是一種指針,指向 string 類型的 const 對(duì)象,但這是錯(cuò)誤的。
錯(cuò)誤的原因在于將 typedef 當(dāng)做文本擴(kuò)展了。聲明 const pstring 時(shí),const 修飾的是 pstring 的類型,這是一個(gè)指針。因此,該聲明語(yǔ)句應(yīng)該是把
cstr 定義為指向 string 類型對(duì)象的 const 指針,這個(gè)定義等價(jià)于:
// cstr is a const pointer to string
string *const cstr; // equivalent to const pstring cstr
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。