Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.

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



Advertisements
Похожие презентации
1 Переопределение операций Макаревич Л. Г.. 2 Зачем нужна перегрузка операций? class Complex { double re; double im; public: Complex(double r=0, double.
Advertisements

Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - основная методология программирования. Она является продуктом.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Лекция 10 Класс как абстрактный тип. Подбельский гл. 9, Страуструп гл. Конструкторы и деструктор Конструкторы - это специальные функции-члены класса, предназначенные.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Прикладное программирование кафедра прикладной и компьютерной оптики Полиморфизм.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Множественное наследование class A {... }; class B {... }; class C : public A, protected B {... }; !!! Спецификатор доступа распространяется только на.
ООП Классы – 2.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Высокоуровневые методы информатики и программирования Лекция 8 Свойства и операции классов.
©Павловская Т.А. Язык С++ Курс «С++. Программирование на языке высокого уровня» Павловская Т.А.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Транксрипт:

Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех экземпляров класса. Статические поля создаются при их инициализации и существуют все время работы программы. Если объекты не созданы, то статические поля можно изменять только с помощью статических методов. Обращение к статическим полям производится с указанием имени класса или имени объекта, если объекты созданы.

Пример использования статических полей class student {… static int count; public: student (char *f, char *n, int a = 20) : age (a) { fam = new char [20]; name = new char [20]; strcpy (fam, f); strcpy (name, n); count++; } … void showcount() { cout

Константные методы и объекты Константные методы определены со словом const и не могут изменять поля объекта. Константные объекты недоступны для изменения. Для таких объектов можно использовать только константные методы.

Пример использования константных методов class student { … void show () const { cout

Дружественные функции и классы Дружественные функции могут получить доступ к скрытым элементам класса. Дружественная функция объявляется внутри класса с ключевым словом friend. Дружественная функция может быть либо обычной функцией, либо методом другого ранее определенного класса. Одна функция может быть дружественной для нескольких классов. Класс может быть описан как дружественный внутри другого класса. Все методы дружественного класса могут получить доступ к скрытым элементам класса.

Пример использования дружественных функций class _time { int h,m; public: _time ( int hours = 0, int minutes = 0) { h = hours; m = minutes; } friend void settime( _time &t, int hr, int mn) { t.h = hr; t.m = mn; } void show() { cout

С++ позволяет переопределить операции так, чтобы они работали с экземплярами классов. Перегрузить можно все операции кроме. ?: :: sizeof При перегрузке сохраняются количество аргументов, приоритеты операций и правила ассоциаций. Перегрузка производится с помощью специальных функций-операций: operator Функции-операции не наследуются и не могут быть статическими.Функция-операция может быть дружественной функцией либо методом класса. Перегрузка операций

Пример перегрузки операций class _time {… friend _time operator+ (_time time1, _time time2) { int h = time1.h + time2.h; int m = time1.m + time2.m; if (m>60) { h++; m-=60; } h = h % 24; return _time(h,m); } _time & operator ++ () { ++m; if (m == 60) { ++h; m=0; } h = h % 24; return *this; } _time operator ++ (int) { _time t = *this; ++m; if (m == 60) { ++h; m=0; } h = h % 24; return t; } }; int main() { _time t(12,30), p (14, 35), r; r = t + p; p = ++r; t = r++; r.show(); p.show(); t.show(); return 0;}

Перегрузка присваивания T& operator = (const T&) Пример: _time & operator =(const _time & t) { h = t.h; m = t.m; return *this; }

Перегрузка индексирования class vector {int size; int *p; public: vector ( int n = 10) : size(n) { p = new int [size]; } ~vector () { delete [] p; } int& operator [] (int i) { if (i size) { cout

Перегрузка приведения типов Операция не имеет возвращаемого значения и параметров. operator имя_типа() class _time { … operator int() {return h*60+m;} … } int main() { _time t (15,20); cout

Функциональные классы(функторы) В функциональном классе переопределена операция вызова функции (). class maximum { public: int operator () (int a, int b) { return a>b ? a : b; } }; int main() {cout