我对C ++很新,并试图理解我正在看的一些代码:
bool ClassName::ClassMethod(const STRUCT_THING* const parameterName) {}
论证中第二个“const”的目的是什么?它与const STRUCT_THING* parameterName
的区别如何?
谢谢!
答案 0 :(得分:5)
这意味着它是指向const
变量的const
指针。
请参阅以下示例:
int x = 5; // non-const int
int* y = &x; // non-const pointer to non-const int
int const a = 3; // const int
int* const b = &a; // const pointer to non-const int
int const* const c = &a; // const pointer to const int
所以你可以看到两件事有可能是可变的,变量和指针。这两者中的任何一个都可以是const
。
const
变量的工作方式与您想象的一样:
int foo = 10;
foo += 5; // Okay!
int const bar = 5;
bar += 3; // Not okay! Should result in a compiler warning (at least)
const
指针的工作方式相同:
int foo = 10;
int bar = 5;
int* a = &foo;
a = &bar; // Okay!
int* const b = &foo;
b = &bar; // Not okay! Should also result in a compiler warning.
答案 1 :(得分:1)
从右边读到letf:
parameterNam是STRUCT_THING类型的常量指针,恰好是const。
基本上你无法改变它,你也无法改变它所指向的内容。
答案 2 :(得分:0)
您使用指向const
变量的const
指针,这是两个不同的东西。
区别在于一个是const
指针,它实际上指向const
变量。