Ya no viene muy a cuento pero me quedé con las ganas de responder. xD
El problema de aprender orientación a objetos en C++ no es que no puedas hacerlo, es que abarcas un rango de posibilidades "no adecuadas" en OO que no serían posibles en c# o java, otro punto es la sintaxis, que en estos dos últimos lenguajes es más explicita. Está claro que se puede aprender en C++ pero seguramente no será el mejor para aprender.
El hecho de que puedas declarar funciones y variables fuera de una clase en C++ y no en java o c#, el que no puedas crear structs en java (o en c# debas especificar el acceso), el tener que especificar abstract para crear clases abstractas tanto en c# como en java y no en c++, etc etc etc hacen que sea mejor para aprender unos que el otro.
Aunque ruby, eiffel y demás puedan ser igual o más válidos (personalmente no he tenido la oportunidad de probarlos) de lejos no tendrán la documentación o comunidad de desarrolladores que tiene java, c# o c++.
Saludos!