使用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