int exampleFunction() { return value;} Returns a copy of value
constint exampleFunction() { return value;} Returns a const copy of value
constint& exampleFunction() { return value;} Returns a const reference to value
The difference between the first two: The first one returns a regular copy. Do whatever you want with it. The second returns a const copy, so you can't change value at all. In practice, I don't think I've ever seen the second example. Code will almost always return a copy, a reference, or a const reference.
The word "const" in "const int exampleFunction()" has no meaning. There is no difference between #1 and #2. Compilers will warn:
test.cc:6:1: warning: 'const' type qualifier on return type has no effect [-Wignored-qualifiers]
const int exampleFunction() { return value;}
^~~~~~
1 warning generated.
test.cc:6:27: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
test.cc(6): warning #858: type qualifier on return type is meaningless
const int exampleFunction() { return value;}
^
(note, if you return a class type (class/struct/union), then const is meaningful)