Quote Originally Posted by Arjay
One of the things that .net offers is a more cohesive programming environment. In C++ you needed to learn some sort of windowing technology (Win32, MFC, ATL, WTL, or some other framework) to write the basic application. Need some collections? Roll your own (last resort) or use stl or MFC collection classes. How about sharing data between applications? No unified way to do interprocess communication. You can use memory mapped files, name pipes and the like - yet another learning curve. Actually COM helped greatly with IPC, but yet another learning curve. How about 3d programming? Got to learn DirectX. Network programming. Yep another set of api's. The list goes on and on.
This is the main point and I think this is not disadvantage. On the contrary, to learning Win32, ATL, MFC, WTL, STL etc. is making you experienced programmer. You can see engineering. All of them has something to give you.

First i learned C# and write some database apps to learn it. But when i learned C++(i mean vtable, why pointers are evil etc.), i understood that managed world has nothing with engineering.