Java - это язык программирования, его в основном используют для программирования и создания программ для мобильных устройств, игр к мобильным устройствам и всему, что с этим связано. Этот язык программирования достаточно молод и развивается, кстати он очень перспективный для работы с ним.
С++:
- Множество различных реализаций трансляторов под практически любые платформы.
- Большое количество средств для анализа кода, отладки и так далее.
- Практически все библиотеки имеют интерфейс на Си или Си++.
- Механизм шаблонов предоставляет отличные средства метапрограммирования. Плюс к этому — стандартный макропроцессор, унаследованный от Си.
- Возможность низкоуровневых манипуляций — например, реализация своих прозрачных механизмов управления памятью или сборки мусора.
Фактически, никаких технологических преимуществ у Delphi (aka Object Pascal) нет. Понятность кода — фактор субъективный. К чему больше привык, то и понятнее.
Это языки семейства си-подобных. Изначально был создан язык Си, более его развитая форма C++, этот язык уже основан на ООП (объектно-ориентированном программировании). Самая свежая и наиболее мощная версия язык C# (произносится Си Шарп), этот язык напоминает немного Java, он тоже основан на классах и они как бы конкуренты. Это, если говорить простым и понятным языком
Все до безобразия просто. Открываете настройки Сервис -> Параметры... В открывшемся окне выбираете "Текстовый редактор", у меня Visual C# Studio Express Edition, выбираем язык и вкладку "Общие" и ставим галочку напротив пункта "Номера строк".
Виртуальные функции в с++ -- это функции класса, для которых предполагаются переопределения в наследниках данного класса. Поскольку указатели на базовый класс могут работать и потомками базового класса, то виртуальные функции применяются для полиморфического доступа.
То есть, если указатель на базовый класс указывает на потомка, то при наличие переопределённого метода у потомка будет вызван именно он, для не виртуальных методов будет вызван метод базового класса.