#include <iostream>
// Immutable objects using const member functions
class User {
private:
int id; // mutable internally
std::string name;
public:
User(int id, std::string name) : id(id), name(name) {}
// Mark getters as const → cannot modify object
int getId() const { return id; }
std::string getName() const { return name; }
// void setName(std::string n) { name = n; } // not allowed if we want immutability
};
int main() {
const User u(1, "Emma"); // object is const
std::cout << u.getId() << std::endl;
std::cout << u.getName() << std::endl;
// u.name = "Tom"; // ERROR: private + const object
// u.setName("Tom"); // ERROR: no setter exists
}
/*
run:
1
Emma
*/