Ne, ne gledaj to uopste po pitanju 'zamene'; ni java ni C# ni ostali noviji jezici nisu izasli da bi zamenili c++, nego da se napravi diversifikacija jezika koji su vise prilagodjeni nekom poslu. Evo da ti napravim paralelu sa hardverskim svetom, recimo graficke karte; moze se reci da ne postoji jedna generalna struja grafickih karti, nego vise njih - specijalizovane za igre, za video, za profesionalni 3D, itd. One nisu konkurenti, nego jednostavno za razlicite namene. Tako i ovde, C++ je najopstiji generalni jezik, kojim moze prakticno sve da se uradi, od low-level stvari, pa do baza, grafike ili web programiranja. Medjutim, postoje programski alati koji neke stvari rade lepse i/ili lakse, bez preke potrebe da se posegne za nekom bibliotekom ili frameworkom u slucaju c++a. Za low level programiranje se i dalje mnogo cesce koristi cisti C, za web programiranje recimo java ili neki od skript jezika kao sto su php ili asp, za home/office namenu je dobar VB. Nijedan od njih nije manje ili vise 'vredan', nego je samo prilagodjeniji ovom ili onom poslu; naravno, neretko se desi da jedan te isti program mozes da uradis i vb-om i delphijem i c++om i javom i tada je to samo pitanje preferencije - sa cime ces lakse i brze da zavrsis posao (ne zaboravi vreme kao vrlo vazan faktor).
Da, multiplatformski programi mogu da budu komplikacija. Ne radi se o samom jeziku - na raznim platformama postoji i c i c++ i c# i pascal i drugi jezici i nije uopste problem pitanje jezika, nego je problem raspolozivost multiplatformskih biblioteka za njih. Cisti c++ na linuxu se ne razlikuje od cistog c++a na windows platformi. Ali zato cisti c++ ne zna npr. sta je to prozor, kako da ga kreira, menja ili zatvori. U principu i ne treba da zna, posto se prozor na linuxu razlikuje od prozora na linuxu i jedan jezik ako zeli da bude univerzalan, ne moze da barata svim specificnostima odredjene platforme, nego se to prepusta bibliotekama. Tako recimo c++ koristi MFC na windowsu da bi iscrtao prozor; na linuxu koristi qt ili gtk ili nesto trece. Dakle, za multiplatformski program treba prvo pronaci biblioteke koje postoje na svim platformama za koje program treba da se pravi. Odnosno, to uopste nije pitanje 'c++ vs c#' kao jezika.