我在使用时的理解如下:
int getX() const {...}
表示此函数不会修改其主体中使用的任何变量。但我没有理解的是在 2 个地方使用了 const,如下所示:
const int* getX () const {...}
把const
关键字放在int*
之前有什么用?
最佳答案
你的第一个解释是错误的。
int getX() const { ... }
是一个成员函数,它不能修改任何数据成员,也不能为具有该函数的类的给定实例调用任何非常量。
const int* getX() const { ... }
返回一个 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 pointer to const int你需要这样的东西:
const int * const getX() {}
整个问题更加复杂,因为您可以将第一个 const
放在不同的地方而不会改变其含义。有关这方面的更多信息,请查看 this SO question .
关于函数中的 C++ const 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266095/