使用const。
一般規則是將const應用於const左邊的對象。除非const是聲明的最左邊部分,否則它應用於右邊。
// Thus these two are equivalent.
const char* data1; // 'pointer to' const char (const applied to right because it has nothing on left)
char const* data2; // 'pointer to' const char
我更喜歡把const放在正確的位置,因爲我可以一直使用從右到左讀取類型的規則。
char const* data3; // 'pointer to' const char (reading right to left)
char* const data4; // const 'pointer to' char (reading right to left)
這是一種風格PREF和許多人喜歡在最左邊的常量(和有足夠的智慧自動在其磁頭讀出聲明:-)。
但,它成爲重要的是當你添加的typedef混進去:
的typedef不是一個文本替換,如果定義了一個類型別名(或同義詞)。
typedef char* CHARP;
const char* data5a; // 'pointer to' const char
const CHARP data5b; // const ''pointer to' char' ***(NOT THE SAME AS above)***
char* const data6a; // const 'pointer to' char
CHARP const data6b; // const ''pointer to' char'
所以,當你開始使用的typedef的含義可以改變(如果你把const的最左邊),只是做一個文本剪切和創建的typedef時粘貼。但是
最後回答這個問題。
你想要一個const指針在你的結構中。要做到這一點,請確保const位於'*'符號的右側。
struct MyStruct
{
MyStruct(MyClass* const init_my_class_ptr)
: my_class_ptr(init_my_class_ptr)
{}
MyClass* const my_class_ptr; // const pointer to MyClass
};
+1對於最後一條語句,我以同樣的方式執行。 – Xeo 2011-04-22 09:51:59
C++是一個很好的語言...... – Jonathan 2011-04-22 09:55:05
@Jonathan最終你會得到它的竅門;)。 – Darhuuk 2011-04-22 10:22:08