Содержание
- 2. Вопросы для повторения Из каких шагов состоит построение программы на C++? Как в тексте программы обнаружить
- 3. Содержание Классы, структуры, объекты Время жизни переменных (объектов) Конструкторы инициализации Структуры Наследование Шаблоны Inline функции и
- 4. Классы, структуры, объекты* Классы объявляются по аналогии с C# class Date { int m_nYear; int m_nMonth;
- 5. Реализация методов* Date.cpp #include “Date.h” Date::Date () { //Указываем класс m_nYear = 1; m_nMonth = 1;
- 6. Объявление и время жизни объектов* #include “Date.h” int main(){ Date d; // Это не ссылка, а
- 7. Конструкторы инициализации* class Date { int m_nYear; int m_nMonth; int m_nDay; public: Date(); Date(int year, int
- 8. Конструкторы инициализации Date::Date (int year, int mon, int day) { if (year 10000) year = 1;
- 9. Структуры* Структуры – те же классы! По умолчанию в них действует область видимости public struct Date
- 10. Структуры в C# В C# между структурами и классами имеются существенные различия! Все структуры в C#
- 11. Наследование class B //Доступом к предку можно управлять { public: void boo(); }; class C: B
- 12. Включение и наследование class B { public: void boo(); }; class C { public: B m_B;
- 13. Предки как неименованные члены класса* class C{ public: B m_B} class C: public B {} с.m_B.boo()
- 14. Шаблоны Шаблоны – абстракции типов и алгоритмов Шаблон алгоритма: template void Swap (T& a, T& b)
- 15. Параметры шаблонов, которые не являются типами Вектора произвольной размерности с типом double или float, а может
- 16. Оператор определения типа typedef vect Vector2D; Теперь можно использовать Vector2D v; ! Шаблоны, как и определения
- 17. Промежуточный итог Узнали особенности классов C++ : Объявление объекта == создание. Не возникает = new …;
- 18. Контрольные вопросы К чему приведет объявление класса в C++ без использования слова public? Почему в конце
- 19. Вызов функции и inline* Вызов функции требует времени: Вычислить и поместить в стек параметры Запомнить адрес
- 20. Переопределение операций Inline методы* class Date { int m_nYear; int m_nMonth; int m_nDay; public: Date(); Date(int
- 21. “Динамические” объекты char *s = new char[128]; Date *p = new Date(); Date *pv = new
- 22. Указатели на объекты При работе с динамическими объектами получаем указатели: Date *p = new Date(); Можно
- 23. Глобальные объекты Правила: Время жизни объектов ограничено блоком кода ({…})в котором они объявлены. Глобальные объекты объявляются
- 24. Глобальные объекты* Глобальный объект должен включаться в h-файл. Что бы избежать создания его экземпляров во множестве
- 25. Статические поля* Статические поля объявляются в классе с квалификатором static* H-файл --------------------------- class Test { public:
- 26. Промежуточный итог Узнали: Назначение и правила inline функций. Быстрее вызываются, определяем в h-файлах; Переопределение операций в
- 27. Контрольные вопросы Что означает запись o.operator = (t)? Как ее можно эквивалентно записать иначе? Переопределите операцию
- 28. Виды конструкторов* Класс Str. Класс для понимания роли конструкторов и деструкторов. class Str { char* m_pszText;
- 29. Доработка Str* Оператор преобразования типа (Str=>char*) operator const char *()const {return m_pszText;} После слова operator следует
- 30. Конструктор инициализации для Str* Str (const char * p) { if(p) { m_pszText = new char
- 31. Варианты использования Str Неправильное копирование* void Test1 (Str sz) {} Str Test2 () { Str sz=
- 32. Конструктор копирования* Str (const Str &s) //Константная ссылка на объект { m_pszText = new char [strlen(s.m_pszText)
- 33. Создание копии* Теперь есть правила Копирования В результате получаем: “Правильные” копии можно создавать и использовать без
- 34. Конструктор копирования Ловушка Если нет конструктора копирования, то копирование заключается в копировании памяти (dummy constructor). При
- 35. Конструктор копирования Ловушка. Пример. class A{ public: int Val; A(int v=0) {Val=v;} operator int&() const {return
- 36. Варианты использования Str Неправильное присваивание* int main(){ Str s = “1234”, s1=“56”; s = s1; }
- 37. Операция присваивания* const Str& operator = (const Str &s) //Константная ссылка на объект { if(&s ==
- 38. Еще о присваивании* Имеется конструктор инициализации Str (const char* sz). Можем инициализировать объекты z-строкой/ Это удобно!
- 39. С объектами ВСЕ ПРОСТО! Когда создаются копии объектов, а когда нет? Каково время жизни объектов? Что
- 40. Промежуточный итог Узнали: Виды конструкторов и зачем они нужны. Конструктор копии. Нужен, если в классе используются
- 41. Контрольные вопросы Перечислите виды конструкторов применяемых в C++. Почему для Date не нужен деструктор и конструктор
- 42. Ссылки и объекты в C#* В C# Reference Type (Value Types похожи на C++) это: Всегда
- 43. Ссылки и объекты в C# Сравнение понятий
- 44. Строки стандартной библиотеки #include #include // Появился тип string. using namespace std; string s; cin >>
- 45. Строки стандартной библиотеки и консольный ввод getline(cin, s); //Читает всю строку! cin>>s while (!cin.eof()) // Закончится
- 47. Скачать презентацию