I'm still learning about C++ and I'm reading everywhere that I have to use const
everywhere I can (for speed reason I think).
I'm usually write my getter method like this:
const bool isReady() {
return ready;
}
But I've seen that some IDE autogenerate getter in this way:
bool getReady() const {
return ready;
}
But, writing delegates, it happened to me to find this error if the const
is after the function:
member function 'isReady' not viable: 'this' argument has type 'const VideoReader', but function is not marked const
So that, what is the better way to write a const getter? Do I really have to care about?
There is a huge difference between the two ways.
const bool isReady()
The code above will return a const bool
, but it does not guarantee that the object will not change its logic state.
bool isReady() const
This will return a bool
, and it guarantees that the logic state of your object will not change. In this case it is not necessary to write const
in front of the return type. It makes no sense to return a const bool
because it is a copy anyway. So making it const
is useless. The second const
is needed for const
correctness, which is not used for speed reasons but to make your program more reliable and safe.