In C++ it is possible to write copy constructors such that if you do this:

TypeT a;
TypeT b;

a=b;

a is a created copy of b. This is simple as long as all the members of TypeT are simple types, don't allocate memory, etc.

How does copy construction work in .NET? As long as all the members of a class are simple, there should be no issues. Perhaps there are never any issues, because things like arrays, that might be handled by pointers in C++ could be sized and copied transparently during construction in .NET, but it seems to me that you could still create a class where it would be nearly impossible to simply copy everything.