我在迈耶斯读到一行: “经常修改指针指向的内容的成员函数不会执行 const。 但如果对象中只有指针,函数是按位常量,编译器就不会报错。”
我不明白修改函数中的指针不能保持其按位常数,因为它是一个成员变量...
即使我们假设按位常数仅适用于指针指向的值,而不适用于指针地址本身。 那么为什么它是类中唯一的成员变量或者它不是唯一的唯一成员变量那么重要..
最佳答案
基本上这意味着如果你有
struct Foo
{
int bar;
};
您不能让 const 成员函数更改 bar
的值。
但是,如果 bar
是指向 int
的指针,您可以在 const 方法中更改 int 的值,因为 int
是实际上不是结构的一部分。
两个版本都实现了相同的目标(即更改 int
的值),但在第一个版本中,您破坏了按位常量,编译器会报错,而在第二个版本中则不会。
关于c++ - 按位常量和指针 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350009/