我一直在學習C++引用變量語法順序,我開始不知道,當你聲明的指針或引用(和常量):指針和C++
int *a;
int* a;
char &b;
char& b;
const char c;
char const c;
是爲a, b
和c
相當於雙方的聲明?他們被允許嗎?
Thnx任何幫助! :)
我一直在學習C++引用變量語法順序,我開始不知道,當你聲明的指針或引用(和常量):指針和C++
int *a;
int* a;
char &b;
char& b;
const char c;
char const c;
是爲a, b
和c
相當於雙方的聲明?他們被允許嗎?
Thnx任何幫助! :)
是的,它們是相同的。
一般規則是,如果const
位於類型名稱旁邊,那麼類型是常量。如果它緊挨着一個指針,那麼它就是不變的指針。如果它在兩者旁邊,則它綁定到該類型。因此:
char const a; // constant character
char const *b; // non constant pointer to constant data
char * const c; // constant pointer to non constant data
char const * const d; constant pointer to constant data
引用默認情況下是常量,因爲它們在初始化後無法更改爲引用其他任何內容。使用上述規則意味着當const
被應用於引用時,它意味着類型/數據是恆定的。
是的,嘿是相同的,儘管引用和指針,以及它們的常量並不相同。
就像一個樣式問題,我試圖保留「&」和「*」的變量。許多程序員都有這樣的習慣(好或壞是其他職位的辯論主題)在同一行上聲明多個相同類型的變量。
例如:
// Creates three pointers to FruitClass instances.
FruitClass *apple, *lemon, *grapes;
如果你陷入把「&」或習慣「*」與類型,你可能會鍵入:
// Creates a pointer to a FruitClass instance and two FruitClass instances.
// This is probably **not** what you wanted to do.
// And if it is, put these on separate lines because everybody will ask
// if you intended to do this and waste your/their time.
FruitClass* apple, lemon, grapes;
這些都是很有不同的東西。
這是一個小問題,如果你以第二種方式代替第一種方式,宇宙就不會自毀。只要小心編譯器何時開始吠叫(當你嘗試將它用作參考/指針而不是它時)。
它也是我所使用的編碼標準的一部分。如果您使用的是標準,請務必遵守,避免代碼檢查過程中浪費時間和沮喪(因爲如果您有標準,某人將正式或非正式地檢查代碼)。
+1 @Nlinelinearldeas感謝你的幫助:)你能解釋一下你給出的例子之間的區別嗎? :) – jjepsuomi
我給代碼添加了一些註釋。這是你在找什麼? – FuzzyBunnySlippers
+1 @Nonlinearldeas yes :)謝謝 – jjepsuomi
yes(填充到這裏) –
+1 @LuchianGrigore thnx :) – jjepsuomi
你的意思是「const char c VS char const c」或「const char * c VS char * const c」? – Yousf