С++ нельзя декомпилировать, но можно дисамблировать и провести инжинеринг, для этого надо быть опытным програмистом и идеально знать асемблер.
C# не кроссплатформенный - неофициально есть проект Mono позволяющей запускать С# программмы на Linux, последние net framework естественно не потдерживаются и нету многих технологий(хотя я год не интересовался этим проектом).
C++ кроссплатформенный - Сам язык кросплотформенный, но помимо языка есть библиотеки, с помощью библиотек легче писать программы (всякие контейнеры, окошки и тд) есть кросплотформенные библиотеки и не кросплотформенные библиотеки, популярные библиотеки (Qt, STLSoft, Boot, STL) кросплотформенные, можно писать не прибигая к библиотекам, тогда ты сам следиш за кросплтформенностью твоего приложения