{k=j+i ;}
void Z :: f (void) {i=2; j=3 ;} main ()
{
Y var; Z var2; var.get_ij (); var.put_ij (); var.make_k (); cout <<var.get_k (); var2.f (); var2.put_ij (); var2.make_k (); cout <<var.get_k ();
}
10.3. Конструкторы с параметрами при наследовании
Пока конструкторы базовых классов не имеют аргументов, производный класс может не иметь функцию «конструктор». Если же конструктор базового класса имеет один или несколько аргументов, каждый производный класс обязан иметь конструктор. Чтобы передать аргументы в базовый класс нужно объявить их после объявления конструктора базового класса.
Синтаксис:
Конструктор производного класса (список аргументов.): базовый класс1 (список аргументов),
…
Базовый класс п. (список аргументов.) {…}
Список аргументов, ассоциированных с базовым классом, может состоять из констант, глобальных переменных или параметров для конструктора производного класса. Так как объект инициализируется во время выполнения программы, можно в качестве параметров использовать переменные:
#include <iostream.h> class x {
protected: int x; public: x (int i) {x=i ;}
26
~x () {}
void put_x (int i) {x=i ;}
int get_x (void) {return x ;}
void show (void) }; class y: public x { protected: int y; public: y (int I; int j); ~y () {}
void put_y (int i) {y=i ;}
int get_y (void) {return y ;}
void show (void); }; class z: public y { protected: int z; public: z (int i; int j); ~z () {}
void make_z (void); void show (void) ;}; void x :: show (void) {cout <<x ;}
y :: y (int i, int j): x (i) {y=j ;}
void y :: show (void) {cout <<x<<y ;}
z: z (int i, int j): y (i, j) {} void z :: make_z (void) {z= x*y ;}
void z :: show (void)
{cout << z<< “=”<<x<<”*”<<y ;} main (void)
{
27
z zobj (3, 5); zobj. make_z (); zobj. show (); zobj. x :: show (); zobj. y :: show (); zobj. pub_x (7); zobj. pub_y (9); zobj. make_7 (); zobj. show (); zobj. x :: show (); zobj. y :: show ();
}
В примере использована следующая схема наследования: class x → class y → class z.
Классы x и y, по сути, равноправны, но из-за реализации механизма простого наследования класс y отличается от x числом параметра конструктора.
10.4. Множественное наследование
Множественное наследование представляет собой наследование, при котором создание производного класса основывается на использовании непосредственных базовых классов.
Выглядит это следующим образом: class имя производного класса. [модификатор]
имя_базового класса1, имя_базового класса2,…,n {…};
Рассмотрим пример при множественном наследовании: class X
class Z
class Y
11. СРЕДА ПРОГРАММИРОВАНИЯ DEVC++
Для выполнения лабораторных работ по программированию (дисциплина «Информатика») рекомендуется использовать среду разработки программ для Windows "DevC++".
28
11.1. Возможности среды программирования
Среда разработки "DevC++" является представителем OpenSourceпродуктов и распространяется свободно, согласно лицензии GNU GPL , версия 2. В качестве компилятора в среде программирования используется Ком-
пилятор TDM-GCC версия GnuCCompiler для Windows.
Скачать актуальную версию "DevC++" можно, перейдя по ссылке: http://sourceforge.net/projects/orwelldevcpp/.
В "DevC++" можно создавать несколько типов приложений и динамически подключаемых библиотек: консольные, оконные приложения, статические и динамические библиотеки. Есть возможность отладки программ и их пошагового выполнения. Кроме этого, "DevC++" позволяет использовать плагины для расширения функционала среды разработки.
11.2. Интерфейс среды программирования
Внешний вид интерфейса среды программирования "DevC++" представляет собой основное окно программы, которое можно разделить на области.
Левая часть окна содержит закладки Project/Classes/Debug. С их помощью можно отобразить файловую структуру проекта (Project), структуру классов и функций (Classes), просматриваемые переменные (Debug).
Центральная часть окна занята кодом программы (main.cpp).
В нижней части окна можно увидеть ряд функциональных вкладок:
Compiler/Resources/CompileLog/Debug/FindResults/Close.
Compiler – закладка, в которой выводятся ошибки компиляции, при клике на них можно перейти в код программы, где ошибка выявлена.
Resources – закладка управления ресурсами Windows-приложения: изображения, иконки и т. п.
CompileLog – журнал компиляции, в нем показываются результаты компиляции (если есть ошибки, открывается закладка Compiler).
Debug – закладка отладчика, с ее помощью можно запустить процесс отладки и управлять им.
FindResults – результаты поиска в файле. При клике на него осуществляется переход на найденный результат поиска в коде.
Close – кнопка, которая сворачивает нижнюю панель, оставляя только заголовки закладок.
29
11.3. Написание и компиляция кода программы
Ввод кода осуществляется в центральной части окна (main.cpp – имя редактируемого файла). В процессе редактирования подсвечиваются парные скобки и кавычки. При нажатом Ctrl и клике по имени функции, переменной или по константе осуществляется переход на объявление этой функции.
Для компиляции программы можно воспользоваться главным меню Execute (рис. 11.1) или сочетаниями клавиш. Компиляция выполняется через пункты меню Execute→Compile или клавишей F9.
Запуск программы выполняется через пункты меню Execute→Run или клавишей F10. Запуск программы с компиляцией выполняется через пункты меню
Execute→Compile & Run или клавишей F11.
Если программа состоит из нескольких файлов или менялись настройки проекта, удобно использовать меню
Execute→RebuildAll для перестройки все-
го проекта, всех объектных и исполняе-
Рис. 11.1. Компиляция программы мых файлов клавишей F12.
Когда в коде программы есть ошибки, они отображаются в нижнем блоке в закладке Compiler (рис. 11.2).
Рис. 11.2. Отображение ошибок компиляции
30