cpp中常对象可以读取public的成员变量吗?
时间: 2023-12-03 08:04:47 浏览: 144
是的,在 C++ 中,常对象可以读取 public 成员变量,因为 public 成员变量不受 const 限制,常对象可以访问它们。
常对象只是对对象状态的限制,并不影响对象的访问级别。只有 const 成员变量和 const 成员函数受到 const 限制,不能被修改或调用非 const 成员函数。其他 public、protected、private 成员变量和成员函数都不受 const 限制,可以被常对象访问。
例如,下面是一个简单的示例代码:
```cpp
class MyClass {
public:
int value;
MyClass(int val) : value(val) {}
void setValue(int val) { value = val; }
int getValue() const { return value; }
private:
int privateValue;
};
int main() {
const MyClass obj(10); // 创建一个常对象
int val = obj.value; // 正确,常对象可以读取 public 成员变量的值
// obj.value = 20; // 错误,常对象不能修改 public 成员变量的值
int value = obj.getValue(); // 正确,可以调用 const 成员函数来获取成员变量的值
// obj.setValue(30); // 错误,常对象上只能调用 const 成员函数
return 0;
}
```
在上面的示例中,常对象 `obj` 可以读取 public 成员变量 `value` 的值,但不能修改它的值。同时,常对象只能调用 const 成员函数 `getValue()` 来获取成员变量的值,不能调用非 const 成员函数 `setValue()` 修改成员变量的值。
阅读全文