C++在类中定义了两个函数double &Student::operator[](int i); double Student::operator[](int i) const;如何确定调用那个函数,举个例子
时间: 2023-12-10 22:37:07 浏览: 100
C++函数的定义和调用
在调用一个类中的函数时,编译器会根据函数的参数和该调用位置的对象是否为 const 对象来确定调用哪个函数。如果该对象是 const 对象,则调用 const 成员函数;否则调用非 const 成员函数。
例如,假设有以下代码:
```cpp
Student s;
const Student cs;
double a = s[0]; // 调用非 const 成员函数
double b = cs[0]; // 调用 const 成员函数
```
在这段代码中,对于 `s[0]` 的调用,由于 `s` 不是 const 对象,因此编译器会调用非 const 成员函数 `double &Student::operator[](int i)`。而对于 `cs[0]` 的调用,由于 `cs` 是 const 对象,因此编译器会调用 const 成员函数 `double Student::operator[](int i) const`。
需要注意的是,对于 const 成员函数,不能修改对象的成员变量。如果需要修改对象的状态,需要调用非 const 成员函数。
阅读全文