Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин
FIT-Gor-PP3
Программа
| |
Пояснение | |
//HELLO.CPP |
Комментарий с именем файла программы |
#include |
Препроцессор с вызовом библиотеки |
Void main () |
Головная функция |
{ cont << ”\nHello, World!\n” ; |
Вывод приветствия на стандартное устройство |
} |
|
Пример 50. Программа на языке С++
Практический выигрыш от ООП можно показать на технике применения средств вывода данных.
Фрагмент |
Пояснение |
printf (“x = %d, y = % s”, x, y); |
Вывод целого и строки. «x» должен быть целым, а «y» – строкой |
Пример 51. Вывод по библиотеке функций stdio.h
Программист должен знать, что первый параметр задает формат вывода и отследить согласование его с числом и типами выводимых данных и обозначениями форматов для функции printf.
Фрагмент |
Пояснение |
cout << “x = ” << x << “, y = ” << y ; |
Поток вывода управляется фактическим типом данных. |
Пример 52. Вывод по библиотеке классов iostream.h
Программисту достаточно перечислить элементы вывода в естественном порядке. Библиотека классов iostream.h содержит перегрузку операции «<<» для всех основных типов данных, что позволяет компилятору выбрать нужный шаблон кода программы, и программист освобожден от необходимости представлять в программе сведения о формате выводимых данных.
Учитывая примеры описания и определения классов, можно сделать вывод, что внешние изменения в тексте программы на С++ в сравнении с текстом на C выглядят как появление ряда новых спецификаторов, с помощью которых как бы задается разметка программы, на области видимости, связанные с иерархией классов и дисциплиной доступа к элементам структурированных объектов класса. В результате вместо анализа последовательностей изменения состояний памяти по всей программе достаточно проанализировать изменения в пределах синтаксически выделенных путей по иерархии наследования методов объектов.
Доступность вложенного класса ограничивается областью видимости лексически объемлющего класса. Если у класса есть конструктор, он вызывается всякий раз при создании объекта этого класса. Если у класса есть деструктор, он вызывается всякий раз, когда уничтожается объект этого класса.
Чтобы можно было описать массив объектов класса с конструктором, этот класс должен иметь стандартный конструктор, вызываемый без параметров. В описании массива объектов не предусмотрено возможности указать параметры для конструктора. Когда уничтожается массив, деструктор должен вызываться для каждого элемента массива.
Производный класс наследует базовый класс, он больше своего базового класса в том смысле, что в нем содержится больше данных, и определено больше функций. Производный класс сам, в свою очередь, может быть базовым классом. Такое множество связанных между собой классов обычно называют иерархией классов. Обычно она представляется деревом, но бывают иерархии с более общей структурой в виде ориентированного графа. У класса может быть несколько прямых базовых классов. Возможность иметь более одного базового класса влечет за собой возможность неоднократного вхождения класса как базового.
С помощью виртуальных функций можно иметь разные версии в разных производных классах, а выбор нужной версии при вызове – это задача транслятора. Тип функции указывается в базовом классе и не может быть переопределен в производном классе. Класс, в котором есть виртуальные функции, называется абстрактным. Абстрактный класс можно использовать только в качестве базового для другого класса.
Фрагмент |
Пояснение |
class complex { double re, im; public: complex(double r, double i) { re=r; im=i; } |
Download 278.16 Kb.
Do'stlaringiz bilan baham:
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling