C++ 教程
類成員訪問運算符( -> )可以被重載,但它較為麻煩。它被定義用于為一個類賦予"指針"行為。運算符 -> 必須是一個成員函數(shù)。如果使用了 -> 運算符,返回類型必須是指針或者是類的對象。
運算符 -> 通常與指針引用運算符 * 結(jié)合使用,用于實現(xiàn)"智能指針"的功能。這些指針是行為與正常指針相似的對象,唯一不同的是,當您通過指針訪問對象時,它們會執(zhí)行其他的任務。比如,當指針銷毀時,或者當指針指向另一個對象時,會自動刪除對象。
間接引用運算符 -> 可被定義為一個一元后綴運算符。也就是說,給出一個類:
class Ptr{ //... X * operator->(); };
類 Ptr 的對象可用于訪問類 X 的成員,使用方式與指針的用法十分相似。例如:
void f(Ptr p ) { p->m = 10 ; // (p.operator->())->m = 10 }
語句 p->m 被解釋為 (p.operator->())->m。同樣地,下面的實例演示了如何重載類成員訪問運算符 ->。
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
10 12 11 13 12 14 13 15 14 16 15 17 16 18 17 19 18 20 19 21其他擴展