C++ has legions of die-hard fans. And why shouldn't it? It's a powerful, flexible tool for building all kinds of applications. It's complicated, too, which means that learning to exploit all that power and flexibility takes a substantial amount of effort. Anyone who's put in the time to master C++ is bound to be less than thrilled about leaving it behind.
Yet for brand-new applications built from scratch on the .NET Framework, C++ probably should be left behind. For a C++ developer, learning C# isn't difficult. In fact, learning C# will probably be easier than using Managed C++ to write .NET Framework–based applications. As the short summary in this chapter suggests, Managed C++ adds even more complexity to an already complex language. For new applications, C# is probably a better choice.
For extending existing C++ applications with managed code, however, Managed C++ is a good choice. And if you plan to port an existing C++ application to run on the Framework, Managed C++ is also a good choice, since it saves you from rewriting large parts of your code. Although it's not as important in the .NET Framework world as either VB.NET or C#, Managed C++ is nevertheless a significant member of .NET's language arsenal.
Taken from book “Understanding .NET: A Tutorial and Analysis“, David Chappell, Publisher: Addison Wesley