the target system C++ supports generic programming. Until the final release of C++/CLI however, Managed C++ programmers must revert for workarounds for using generics. C++ supports the keyword "const" and const correctness. Managed C++, like Java and C#, does not contain this feature. An alternative is to make a managed class immutable, or restricting set accessors on public interfaces. C++ code is not constricted by the CLR's restrictions. For example, the CLR does not allow classes to inherit other classes privately nor protected, thus the following will produce a compiler error: public __gc class one { int i; }; public __gc class two: private one { int h; i = h; }; // error public __gc class three: protected one { int h; i=h;}; // error Managed C++ __gc classes cannot inherit from more than one class, as such the following will produce a compiler error: __gc class a {}; __gc class b {}; __gc class c: public a, public b {}; //will produce an error Advantages Managed C++ supports a greater degree of reflection than regular C++, which is generally much more convenient depending on the function of the code, or what the code is intended for. Managed C++ can inter-operate with all other .NET capable languages, including other third party languages. Managed C++ is garbage collected. In standard C++, memory management and allocation is the responsibility of the programmer. Java Differences Running Java code requires an appropriate virtual machine, while running Managed C++ code requires an appropriate implementation of the .NET Framework. Disadvantages Java provides a documentation on the source code, while Managed C++ does not. Java has many other development tools available for Java programmers to use, while Managed C++ is only available under Visual Studio .NET. Advantages Managed C++ can access the computer system on a low level interface much more easily than Java. Java programmers must use the JNI (Java Native Interface) to use low level services of the host operating system. C# Differences While C# supports pointers just as in C++, this feature is turned off by default. Disadvantages Like Java, C# is syntactically simpler when dealing with managed code. C# can achieve basically the same result as Managed C++, as all syntactic and structural conventions remain strikingly similar. Managed C++, though it is a strongly typed language due to its introduction into the CLR, can be prone to errors if unmanaged compiled code