книга (И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++), страница 7

PDF-файл книга (И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++), страница 7 Практикум (Прикладное программное обеспечение и системы программирования) (37574): Книга - 4 семестркнига (И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++) - PDF, страница 7 (375742019-05-09СтудИзба

Описание файла

Файл "книга" внутри архива находится в папке "И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++". PDF-файл из архива "И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 7 страницы из PDF

При этом в динамической памяти предварительноотводится необходимый по объему фрагмент памяти;3) при композиции объектов;4) при создании объекта производного класса.ЗамечаниеЕсли в программе создается не единичный (скалярный) объект, а массивобъектов, то в соответствующем классе (структуре) должен быть конструкторумолчания (явно или неявно сгенерированный). Действительно, при объявлении массива объектов или создании массива в динамической памяти указывается размерность массива, что несовместимо с заданием параметров дляконструктора преобразования или конструктора с двумя и более параметрами:class X{ . .

.};X* x1 = new X[10];Как уже было указано, если в классе явно описан хотя бы один конструктор, то конструктор умолчания не генерируется системой неявно. Дляудаления такого массива должна применяться векторная форма операцииdelete, при использовании которой деструктор вызывается для каждого элемента массива:delete[] x137Конструкторы и деструкторыКонструктор копирования вызывается:1) при инициализации создаваемого объекта:box a(1,2,3);box b = a;// вызов конструктора с тремя параметрами// инициализация2) при инициализации временным объектом:box c = box(3,4,5)3) при передаче параметров-объектов в функцию по значению:int f(box b)4) при возвращении результата работы функции в виде объекта.box f ()Примечание 1Если используется оптимизирующий компилятор, то при обработке инициализации вида:box c = box(3,4,5)временный объект не создается, и вместо конструктора копирования используется конструктор с тремя параметрами:(box c(3,4,5))Примечание 2Если при возвращении результата работы функции в виде объекта тип возвращаемого значения не совпадает с типом результата работы функции, товызывается не конструктор копирования, а конструктор преобразования илифункция преобразования ( описывается ниже).

Данное преобразованиевы-полняется, если оно однозначно. Иначе фиксируется ошибка.Пример:class Y;class X{. . .public:X ( const Y& y1 );. . .};class Y{. . .38Конструкторы и деструкторыpublic:. . .X f(){. . .return *this;}};X::X(const Y& y1){. . .}Деструктор вызывается:1) при свертке стека — при выходе из блока описания объекта,в частности, при обработке исключений (при выходе из try-блока пооператору throw, try-блоки описываются далее), завершении работыфункций;2) при уничтожении временных объектов — сразу, как только завершится конструкция, в которой они использовались;3) при выполнении операции delete для указателя, получившего значение в результате выполнения операции new.

После выполнениядеструктора освобождается выделенный для объекта участок памяти;4) при завершении работы программы при уничтожении глобальныхи статических объектов.ПримечаниеВсе правила описания и использования конструкторов и деструкторов применимы и для структур.39Статические члены классаГлава 5.Статические члены классаИнформационные члены класса, которые могут быть представленыв единственном экземпляре для всех объектов данного типа, в случае такогопредставления называются статическими членами.

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

Статический метод не может использовать никакие нестатические члены класса, так как, являясь частью класса, а не объекта, он не имеетнеявного параметра this. Поскольку статический метод не использует специфического содержимого конкретного объекта, то обращение к нему можетосуществляться не только с использованием идентификатора объекта, но ис использованием идентификатора класса:имя_класса ::имя_функции (фактические_параметры)Одно из очевидных применений статических методов — манипуляцияглобальными объектами и статическими полями данных соответствующегокласса.Примечание 1Статические методы класса не могут вызывать нестатические, так как последние имеют доступ к данным конкретных объектов. Обратное допустимо:нестатические методы могут вызывать статические методы.40Статические члены классаПримечание 2Статический метод класса может создавать объекты данного и любого другогокласса.

Это можно использовать, в частности, если необходимо в программезапретить создание объектов простым объявлением или с использованиемоперации new. в этом случае конструктор и деструктор помещаются в закрытую область класса, а для создания и уничтожения объекта используютсяспециальные статические методы, которые можно вызывать, не имея ни одного объекта.Примечание 3Статические методы класса не могут быть виртуальными и константными(inline–функциями быть могут).Пример:#include <iostream>using namespace std;class X{X() {}~X() {}public:static X& createX(){X* x1 = new X;cout << "X created" << endl;return *x1;}static void destroyX ( X& x1 ){delete &x1;cout << "X destroyed" << endl;}};int main(){X& xx1 = X::createX();.

. .X::destroyX(xx1);return 0;}Статические информационные члены класса, даже находящиесяв закрытой области (а это характерно для информационных членов классав соответствии с принципом инкапсуляции), необходимо объявить дополнительно вне класса (с возможной инициализацией):тип_переменнойинициализатор;имя_класса :: идентификатор =Это связано с тем, что память для статического объекта должна бытьвыделена до начала работы программы. в то же время при обработке описания класса до создания конкретных объектов никакие области памяти неотводятся. в дальнейшем прямое обращение к статическим информационнымчленам, находящимся в закрытой секции, недопустимо. Если инициализацияне нужна, то все равно необходимо дополнительное объявление статического41Статические члены классачлена вне класса для резервирования памяти для статического члена.в противном случае на этапе сборки исполняемого модуля будет выданаошибка о неразрешенной внешней ссылке.Пример:class B{static int i; // статический информационный член// классаpublic:// статический методstatic void f ( int j ){i = j;}};int B::I = 10;int main(){B a;.

. .B::f(1);. . .return 0;}42////////дополнительное внешнее определениестатической переменной синициализацией статическогоинформационного члена класса b.// вызов статической функции-члена класса.Константные члены класса. Модификатор «const»Глава 6.Константные члены класса.Модификатор «const»Все информационные члены класса, не являющиеся статическими информационными членами, можно представлять, как данные, доступные методукласса через указатель this (в случае необходимости этот указатель можноупотреблять явно).Если необходимо запретить методу изменять информационные членыобъектов класса, то при его описании используется дополнительный модификатор const:Описанные таким образом методы класса называются константными.Тем не менее, статические члены класса могут изменяться такойфункцией, так как они являются частью класса, но не объекта.

Если же статические информационные члены класса имеют дополнительный модификатор const, то они не могут изменяться никакими методами класса.ПримечаниеВ некоторых изданиях (см., например, [9] стр. 144, п.5.8. Функции-члены типаstatic и const) данные, доступные через указатель this, рассматриваются какнеявные аргументы метода класса. Конечно, можно рассматривать глобальныепеременные также в качестве неявных параметров для всех функций, а нетолько методов класса. Тем не менее, если дать определение неявных аргументов метода класса как данных, доступных через указатель this, то вышеописанное можно сформулировать следующим образом: константные методыне могут изменять свои неявные аргументы.Таким образом, если объект типа описанного класса является константным объектом, то есть он объявлен c модификатором const, это означает, что изменение его состояния недопустимо.

в таком случае все применяемые к этому объекту методы (кроме конструкторов и деструктора)должны иметь модификатор const. Данное требование является обязательным независимо от наличия или отсутствия информационных членовв классе.Для защиты от изменения передаваемых фактических параметров в телефункции соответствующие формальные параметры также объявляютсяс модификатором const:43Константные члены класса. Модификатор «const»Объявление методов класса и формальных параметровфикатором const называется контролем постоянства.с моди-Если необходимо запретить изменение объекта в пределах его областивидимости, то при объявлении объекта используется ключевое слово const,например:const X x2 = x1;ПримечаниеПри объявлении объекта с модификатором const объект должен быть обязательно инициализирован.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
426
Средний доход
с одного платного файла
Обучение Подробнее