引用和指標
引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下:
int nvalue = 5;
int *const pnvalue = &nvalue;
int &rnvalue = nvalue;
*pnvalue and rnvalue evaluate identically. as a result, the following two statements produce the same effect:
*pnvalue = 6;
rnvalue = 6;
同樣,乙個const引用的行為就像乙個const指標指向const物件是隱式解引用。
因為引用總是「點」來有效的物件,而不能指出釋放記憶體,引用的是比使用指標安全。如果乙個任務可以通過引用或指標解決,參考一般應首選。指標通常只能用在引用是不充分的情況下(如動態分配的記憶體)。
成員的選擇
通常有乙個指標或引用乙個結構(或類)。正如你已知道的,你可以選擇使用乙個struct的成員選擇運算子成員(。):
123
4567
891011
1213
1415
1617
struct something;
// member selection using actual struct variable
something ssomething;
ssomething.nvalue = 5;
// member selection using reference to struct
something &rssomething = ssomething;
rssomething.nvalue = 5;
// member selection using pointer to struct
something *pssomething = &ssomething;
(*pssomething).nvalue = 5;
注意指標解引用必須括在括號,因為成員選擇運算子具有比解引用操作符的優先順序更高的。
因為訪問結構和類成員通過指標是笨拙的語法,c + +提供的第二個成員選擇運算子(->)從指標做成員選擇。下面的兩行是等價的:
隱式解引用
引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下 int nvalue 5 int const pnvalue nvalue int rnvalue nvalue 同樣,乙個const引用的行為就像乙個const指標指向const物件是隱式解引用。因為引用總是 點 來有效...
物件是隱式解引用
引用和指標 引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下 1 2 3 intnvalue 5 int constpnvalue nvalue int rnvalue nvalue pnvalue和rnvalue評估同。作為乙個結果,下面兩個語句 產生相同的效果 1 2...
顯式解引用
這實際上會指定返回值的函式呼叫goo 到pfoo,這並不是我們想要的。我們希望pfoo被分配到功能良好,沒有從goo 返回值。所以沒有圓括號是必需的。請注意,簽名 引數和返回值的函式指標必須 函式的簽名匹配。這裡是乙個例子 123 4567 891011 function prototypes in...