Const在一个方法参数中两次?

时间:2014-10-14 20:55:07

标签: c++

我对C ++很新,并试图理解我正在看的一些代码:

bool ClassName::ClassMethod(const STRUCT_THING* const parameterName) {}

论证中第二个“const”的目的是什么?它与const STRUCT_THING* parameterName的区别如何?

谢谢!

3 个答案:

答案 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变量。