2

我在使用时理解如下:

int getX() const {...} 

意味着此函数不会修改其主体中使用的任何变量。但我不知道的是在 2 个地方使用 const,如下所示:

const int* getX () const {...}

const关键字放在前面有什么用int*

4

1 回答 1

5

你的第一个解释是错误的。

int getX() const { ... }

是一个成员函数,它不能修改任何数据成员或为具有该函数的类的给定实例调用任何非常量。

const int* getX() const { ... }

返回 a const int*,因此它限制了您可以分配给使用它的内容。它是一个指向 const int 的非 const 指针,因此您不能修改它指向的 int,但您可以修改指针本身。例如:

const int* i = someInstange.getX(); // getX() returns const int*
i = someOtherFunction(); // another function returning const int*. OK to reassign i.

所以i它本身不是const,但它指向的是:

(*i)++; // ERROR!

如果你想返回一个指向 const int 的 const 指针,你需要这样的东西:

const int * const getX() {}

整个问题更加复杂,因为您可以将第一个const放在不同的地方而不改变含义。有关这方面的更多信息,请查看这个 SO question

于 2012-04-22T07:37:53.813 回答