Does Reverse Engineering always produces the source code in the same language the software was originally written? For example, if the software program(.exe) been reversed was written in C++, the output of the reverse process would necessarily be C++ source code?
Reverse engineering is the process of figuring out how stuff works. The output format of a reverse engineering session is not dependent on the original language in which the target was written, but rather is dependent on the purpose of the session (porting to a new system, stealing a competitor's algorithm, explaining to executives how a malware sample works at a high-level, etc.).
The final product of a reverse engineering session may be a human-readable report, or pseudo-code, or a data-flow diagram, or a slide show presentation, or a reimplementation of the target in any language the reverse engineer wishes to use.