В этом коде панель объектов представляет собой тип const, но через функцию const я все еще могу изменить значение элемента x. Это необоснованно?Член объекта C++ const может быть изменен
выход
// overloading members on constness
#include <iostream>
using namespace std;
class MyClass {
int x;
public:
MyClass(int val) : x(val) {}
int& get() const {return x;}
int& get() {return x;}
};
int main() {
MyClass foo (10);
const MyClass bar (20);
foo.get() = 15;
bar.get() = 25;
cout << foo.get() << '\n';
cout << bar.get() << '\n';
return 0;
}
Этот код не должен компилироваться. Вы не можете взять ссылку «T &» на объект 'const T' (который фактически становится x). – Paranaix
'get() const' говорит, что функция не изменяет данные (а это не так) - не то, что возвращаемое значение является const – Rob
@Paranaix, но успех компиляции – Jianchen