C++ Const
Const Memory
Changing the value of a const
:
- Storage for a
const
value may be changed by using pointers. - Compilers may choose to just replace occurances of the const with its value.
- See http://cpp.sh/86yky for an example.
const int year = 2020;
int * time_machine;
time_machine = (int *)&year;
*time_machine = 2019;
const int *year_stored = &year;
std::cout << *year_stored << std::endl; // output: 2019
std::cout << year << std::endl; // output: 2020
Const pointers
Pointer to a const
value (i.e. can’t change the value)
const int *ptr;
int const *ptr; // does the same as the line above
const
pointer to a value (i.e. can’t change the pointer)
int * const ptr;
Const with Classes
const
in class
methods:
- Indicates that class member variables won’t be modified in this method
class TimeMachine {
private:
int year;
public:
int get_year() const {
return year;
}
}
// When accessing a reference of a class, we can only use the const methods
int my_age(const TimeMachine& time_machine) {
// This is an error if get_year is not const
return time_machine.get_year() - 1988;
}