I’ve read two articles describing COM objects as being basically C++ classes. Is this true? Here’s one of the articles I am reading: http://www.codeproject.com/Articles/13601/COM-in-plain-C
It describes a means for creating a COM object in C. COM enforces that the first members of this structure are certain function pointers.
I am not seeing the concrete correlation between COM objects and C++, although I can understand that relationship is easily understood.
IMO, this depends a little on how you define a COM object. If a COM object is any object that is compatible with the COM Binary Interface, then whether or not the object is internally implemented in C++ is an implementation detail. It can be implemented in C++, but it could also be implemented in all sorts of other ways, and it is largely irrelevant as long as you access it through the COM interface.
That being said, as Adam and WhozCraig pointed out, COM’s Binary Interface was designed with MSVC’s C++ compiler in mind. Writing COM objects in MSVC C++ was the ‘original’ way to create COM objects. So the two definitely have an interwoven history, and indeed the COM Binary Interface specification has a lot in common with how MSVC lays out C++ objects. But, the MSVC compiler still has to generate COM bindings as an ‘extra’ compile step (e.g., the COM typelib, and C++ import headers so other C++ projects can import the COM library).