Контрольные вопросы
Почему вы не можете присвоить константную ссылку неконстантной?
new и d e l e t e — это функции?
Каков характер значения, содержащегося в переменной указателя?
Какой оператор используется для доступа к данным, на которые указывает указатель?
Упражнения
Что будет отображено при выполнении этих операторов:
int Number = 3;
int* pNuml = &Number;
_*pNuml =20;
int* pNum2 = pNuml;
Number *= 2;
cout « *pNum2;
2 / В чем подобие и различие между этими тремя перегруженными функциями:
int DoSomething(int Numl, int Num2);
int DoSomething(int& Numl, int& Num2);
int DoSomething(int* pNuml, int* pNum2);
Как изменить объявление указателя pNuml в строке 1 упражнения 1, чтобы сделать присвоение в строке 3 недопустимым? (Подсказка: это имеет некоторое отношение к обеспечению невозможности изменения данных, на которые указывает указатель pNuml.)
О тладка: Что не так с этим кодом?
#include using namespace std; int main()
{
int *pNumber = new int; pNumber = 9;
cout « "The value at pNumber: " « *pNumber; delete pNumber;
return 0;
}
О тладка: Что не так с этим кодом?
#include using namespace std; int main()
int pNumber = new int;
int* pNumberCopy = pNumber;
*pNumberCopy = 30;
cout « *pNumber;
delete pNumberCopy;
delete pNumber;
return 0;
}
6. Каков вывод приведенной выше программы после исправления?
ЧАСТЬ II
ундаментальные
ПРИНЦИПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ НА C++
ЗАНЯТИЕ 9. Классы и объекты
ЗАНЯТИЕ 10. Реализация наследования
ЗАНЯТИЕ 11. Полиморфизм
ЗАНЯТИЕ 12. Типы операторов и их перегрузка
ЗАНЯТИЕ 13. Операторы приведения
ЗАНЯТИЕ 14. Макросы и шаблоны
ЗАНЯТИЕ 9
Классы и объекты
До сих пор мы исследовали структуру простой программы, которая выполняет операторы в функции main (), позволяющие объявлять ло кальные и глобальные переменные, константы, структурировать логику выполнения в функциях, которые могут получать параметры и возвра щать значения. Все это очень похоже на такой процедурный язык, как
у которого нет ориентации на объекты. Другими словами, пришло зремя узнать об управлении данными и методах, связанных с этим.
На сегодняшнем занятии.
■ Что такое классы.
■ Как классы позволяют объединить данные с методами (аналогом функций) для работы с ними.
■ Конструкторы, конструкторы копий и деструкторы.
■ Как язык С++11 позволяет улучшить производительность при помощи конструктора перемещения.
■ Объектно-ориентированные концепции инкапсуляции и абстракции.
■ Что такое указатель this.
■ Что такое структура и чем она отличается от класса.
ЗАНЯТИЕ 9. Классы и объекты
Концепция классов и объектов
Предположим, вы пишете программу, моделирующую такого человека, как вы сами.
человека должна быть индивидуальность: имя, дата рождения, место рождения и пол. Человек может выполнять определенные действия, например говорить и представляться другим людям. Таким образом, первая часть информации — это данные о человеке, а вто рая — это его функции (рис. 9.1).
Сущность человека
Данные
• Пол (Gender)
• Дата рождения (Date of birth)
• Место рождения (Place of birth)
• Имя (Name)
Методы
• Представиться() (lntroduceSelf())
РИС. 9.1. Общее представление человека
Чтобы смоделировать человека, нужна конструкция, позволяющая сгруппировать атри буты, определяющие человека (данные), и действия, которые он может выполнять (мето ды, подобные функциям), используя доступные атрибуты. Эта конструкция называется класс (class).
Do'stlaringiz bilan baham: |