As in Visual Basic, passing a COM object by value in C++ is not a built-in language feature but is a feature the majority of the COM programming community would like to see added to the Microsoft COM specification. I hope it will happen soon and, since Visual Basic object-oriented programming is deeply rooted in COM, the feature will eventually find its way into Visual Basic. In the interim, the Object By Value design pattern can allow you to implement this feature today.