像*和&這樣的符號,既能用做表達式裏的運算符,也能做爲聲明的一部分出現,符號上下文決定了符號的意義。
指針
int i = 42;
引用
int &r = i; //&緊隨類型名出現,所以是聲明的一部分,r是一個引用
運算符
int *p; //*緊隨類型名出現,所以是聲明的一部分,p是一個指針。
p = &i; //&出如今表達式中,是一個取地址符
*p = i; //*出如今表達式中,是一個解引用符。
int &r2 = *p; //&緊隨類型名出現,所以是聲明的一部分,r2是一個引用,*出現是在表達式中,是一個解引用符。
在聲明的語句中,&和*用於組成符合類型;在表達式中他們的角色又轉變成運算符。在不一樣的場景下出現的雖然是同一個符號、可是因爲含義大相徑庭,因此咱們徹底能夠把它看成不一樣的符號來看待。