MST

星途 面试题库

面试题:C++ 按常量引用传递中的常量性分析

在C++ 中,有如下代码片段: ```cpp class MyClass { public: int value; MyClass(int v) : value(v) {} }; void func(const MyClass& obj) { // 此处能否修改obj.value? 如果不能,为什么? } ``` 请分析在 `func` 函数中能否修改 `obj.value`,并说明原因。
39.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

func函数中不能修改obj.value。原因如下:

  1. func函数的参数是const MyClass& obj,这意味着obj是一个指向const MyClass对象的引用。
  2. 对于const对象,其成员变量默认是只读的,以保证对象状态在函数调用期间不被意外修改。
  3. 如果在func函数中尝试修改obj.value,编译器会报错,因为这违反了const对象的只读性质。

总结来说,为了保证const对象的状态不变,在处理const对象的函数中,不能修改其成员变量(除非成员变量被声明为mutable,但在给定代码中value并非mutable)。