Search code examples
c++constants

What does "const" mean in return types, in function parameters, and after member functions?


const int* const Method3(const int* const&) const;

Can someone explain the usage of each of the const?


Solution

  • Read this: https://isocpp.org/wiki/faq/const-correctness

    The final const means that the function Method3 does not modify the non mutable members of its class.

    const int* const means a constant pointer to a constant int: i.e. a pointer that cannot be changed, to an int that cannot be changed: the only difference between this and const int& is that it can be null

    const int* const& means a reference to a constant pointer to a constant int. Usually pointers are not passed by reference; const int* & makes more sense because it would mean that the pointer could be changed during the method call, which would be the only reason I can see to pass a pointer by reference, const int* const& is to all intents and purposes the same as const int* const except that it is probably less efficient as pointers are plain old data (POD) types and these should, in general be passed by value.