С++, ООП Семинар 4 Рябова Анна Сергеевна ryabova.anna@gmail.com.

Презентация:



Advertisements
Похожие презентации
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Advertisements

Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Основы информатики Лекция. Директивы. Исключения Заикин Олег Сергеевич
Препроцессор языка Си Препроцессор языка Си предназначен для внесения изменений в исходный текст программы непосредственно перед ее компиляцией, а также.
С++, начала ООП Семинар 3 Рябова Анна Сергеевна
Лекция 10 Препроцессор. Препроцессор языка Си Препроцессор работает на первом шаге компиляции. Директивы препроцессора: #include#define#undef #ifdef#if#else.
Язык C, введение семинар 1. Рябова Анна Сергеевна
Условная компиляция Условная компиляция C / С++Pascal Условная компиляция выполняется с помощью специальных директив и позволяет выборочно компилировать.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
С++, ООП Семинар 2 Рябова Анна Сергеевна
Лекция 1. Этапы разработки программы.. Человек вводит в компьютер исходные данные (например, с клавиатуры).
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Структура простейшей СИ- программы Директивы препроцессора (в простейшем случае #include /*ввод/вывод*/ #include /*стандартные математические функции*/)
Лекция 16. Введение в ООП. Часть 7 Красс Александр СПбГУ ИТМО, 2008.
Основы информатики Лекция 2. Hello C++ Заикин Олег Сергеевич
НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.
Прикладное программирование кафедра прикладной и компьютерной оптики Абстрактные типы данных.
С++, начала ООП Семинар 1 Рябова Анна Сергеевна
Транксрипт:

С++, ООП Семинар 4 Рябова Анна Сергеевна

Задание 3: символьное дифференцирование Реализуйте абстрактный класс Expression с чисто виртуальными методами Expression* diff(); и void print(); и отнаследуйте от него классы Number (число), Variable (переменная), Add (сумма двух выражений), Sub (разность двух выражений), для котоых напишите реализацию этих методов. Пример Expression *e = new Add(new Number(1), new Variable('x')); std::cout diff(); de->print(); std::cout

Защита подключения В Си и C++ директивы #include guards называется macro guard (макрозащита) это особая конструкция, применяемая для избежания проблем с «двойным подключением» при использовании директивы компилятора #include. Двойное подключение File «grandfather.h» class foo { int member; }; File «father.h» #include "grandfather.h File «child.c» #include "grandfather.h" #include "father.h" Здесь к файлу «child.c» напрямую подключаются две копии заголовочного файла «grandfather.h». Это может вызвать ошибку компиляции, так как класс foo явным образом определяется дважды.

Применение #include guards File «grandfather.h» #ifndef H_GRANDFATHER #define H_GRANDFATHER class foo { int member; }; #endif File «father.h» #include "grandfather.h« File «child.c» #include "grandfather.h" #include "father.h" В даном примере, первое включение файла «grandfather.h» вызывает макроопределение H_GRANDFATHER. Далее, когда к «child.c» подключается «grandfather.h» второй раз, проверка #ifndef выдаёт ошибку, и препроцессор пропускает #endif, таким образом избегая второго определения class foo. В результате программа компилируется корректно.