專欄簡介:本專欄主要面向C++初學者,解釋C++的一些基本概念和基礎語言特性,涉及C++標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級程序設計技術。希望對讀者有幫助!
目錄
4.6 成員訪問運算符
點運算符和箭頭運算符都可用于訪問成員,其中,點運算符獲取類對象的一個成員;箭頭運算符與點運算符有關,表達式pt->mem等價于(*ptr).mem:
strtng s1="astring",*p=g&s1;
auto n=s1.size(); //運行string對象s1的size成員
n = (*p).size(); //運行p所指對象的size成員
p->size(); //等價于(*p).size()
因為解引用運算符的優先級低于點運算符,所以執行解引用運算的子表達式兩端必須加上括號。如果沒加括號,代碼的含義就大不相同了:
//運行p的size成員,然后解引用size的結果
*p.size(); //錯誤:p是一個指針,它沒有名為size的成員
這條表達式試圖訪問對象p的size成員,但是p本身是一個指針且不包含任何成員,所以上述語句無法通過編譯。
箭頭運算符作用于一個指針類型的運算對象,結果是一個左值。點運算符分成兩種情況:如果成員所屬的對象是左值,那么結果是左值;反之,如果成員所屬的對象是右值,那么結果是右值。