be garbage collected via the __gc extension keyword. //gc.cpp #using <mscorlib.dll> __gc class gc { int* i; char* g; float* j; }; int main() { while (true) { gc^ _gc = gcnew gc(); } return 0; } The preceding code can be compiled and executed without any fear of memory leaks. Because class gc is managed under the garbage collector, there is no need to call the delete operator. To achieve the same with unmanaged code, the delete keyword is required: //nogc.cpp class gc { int* i; char* g; float* j; }; int main() { while (true) { gc* _gc = new gc(); delete _gc; } return 0; } Notes: A __gc designated class can have a constructor declared. A __gc designated class can have a destructor declared. A __gc designated class cannot inherit more than one class. (This is a limitation of the CLR) A __gc designated class cannot inherit another class that is not __gc designated. A __gc designated class cannot be inherited by another class that is not __gc designated. A __gc designated class can implement any number of __gc interfaces. A __gc designated class cannot implement an unmanaged interface. A __gc designated class is by default not made visible outside of its own assembly. Use public __gc class hey { }; the public keyword to modify the access of the a __gc designated class. A __gc designated class can be destroyed manually using the delete keyword, but only if the __gc designated class has a user-defined destructor. An interface can be declared with the __gc extension keyword preceding it. Such as: //interface.cpp #using <mscorlib.dll> __gc __interface ClassBase { void Init(); int Common(); } The preceding code must be compiled with /clr and /LD to produce a simple DLL file. Notes: A __gc __interface cannot contain any data members, static members, nested class declarations and no access specifiers. A __gc __interface can only inherit from another __gc __interface interface or the System::Object. Inheritance from System::Object is the default behavior. A __gc __interface cannot contain any implementation (body code) of its declared function prototypes. Comparison with other languages The following contains main points and programmatic standards that differ between Managed C++ and other well known programming languages that are similar in concept. Standard C++ Disadvantages native C++ code may be faster at runtime. C++ does not require an installation of an associated compiler and managed runtime environment on