No it doesn't. Return ends the function that it is in. If that means that the function which called the function that returned reaches its end then it will end too, but return just ends the function that it is in.
To clarify, it is called return because it returns a value from the function, not because it returns back to main. Or it could be because it returns to the function that called it (even if that isn't main), but I'm pretty sure that it is the returning a value thing.
exit(int) will end the program and call destructors for static objects. abort() will end the program immediately without calling destructors and will notify the OS that the program has terminated abnormally, which will usually display an error message to the user.