【发布时间】:2021-07-25 20:38:32
【问题描述】:
让我们有一个示例程序:
struct Example
{
int* pointer;
Example(int* p) : pointer(p) {}
};
int main()
{
int var = 30;
const Example object(&var);
object.pointer = &var; // error
*object.pointer = var;
}
我知道为什么会出现错误 - 在创建 const Example 对象时,pointer 实际上是 const 指针,而不是指向 const 的指针。因此,将&var 分配给object.pointer 是不正确的,但将var 分配给*object.pointer 工作得很好。
那么有什么办法可以使这条线:
*object.pointer = var;
不编译?我希望指针指向的值也为 const。也就是说,在创建 const 对象时:
const Example object(&var);
我希望常量也适用于值本身,而不仅仅是指针:
const int* const pointer; // something like that
【问题讨论】:
-
这个声明有什么问题 const int* const pointer;还是使用这个 const int *pointer?
-
当
pointer为private时,该行将无法编译;)
标签: c++ class constants member-access