This is probably not something new to most of researchers that work on computer vision, but OpenCV moved into C++ since it changed into version 2.X!
Currently the most stable version is OpenCV 2.3
I would say that this version is a must. It is not that having the latest version is necessarily better in general terms, but the new improvements on OpenCV are significant and will make your life (as computer vision guy) easier. No doubt!
One of the things I spent more time with in OpenCV was fighting with memory, accesing to pointers inside CvMat and other C-like problems. Since I discovered OpenCV 2.3 (let’s call it OpenCV C++), I could focus on the right things (it is, the algorithms) because everything is now done in a C++ style, using references and objects that are created and destroyed in their scope.
Nevertheless, the new features of OpenCV C++ include a backwards compatibility (in most cases), which allow us to reuse our old (now deprecated) OpenCV 1.X C-style code. For instance, the Mat class includes some tricks to convert back and forth the old IplImage pointers.
Here you are a nice set of conversion tricks:
I will try to post as many of those tricks as possible (since I do not know them all!).