- •2.Операторы new, delete.
- •4. Перегрузка функций.
- •5. Ссылки. Назначение и особенности использования.
- •10. Классы и объекты. Члены классов. Атрибуты доступа.
- •11. Описание классов. Видимость и доступ к членам классов.
- •12. Функции-члены классов. Описание, вызов.
- •13. Инициализация объектов классов. Назначение, типы конструкторов.
- •14. Инициализация объектов классов. Описание конструкторов.
- •15. Особенности описания и использования конструкторов копирования.
- •16. Деструкторы. Назначение, описание, использование.
- •17. Пример описания конструктора копирования для класса со структурными членами-данными (массива).
- •24. Пример использования функции-друга.
- •25. Перегрузка операторов. Назначение, правила, способы.
- •26. Перегрузка операторов с использованием операторных-функций. Указатель this.
- •27. Перегрузка операторов с использованием дружественных функций.
- •28. Поразрядное копирование. Особенности перегрузки оператора присваивания.
- •29. Перегрузка операторов отношений. Примеры.
- •30. Перегрузка логических операторов. Примеры.
- •31. Перегрузка арифметических операторов. Примеры.
- •33. Перегрузка оператора ”[ ]” для класса со структурными членами-данными (массива).
- •37. Наследование. Конструкторы и деструкторы.
- •38. Наследование. Видимость и доступ к членам базовых и производных классов.
- •39. Статический (перегрузка операторов, функций, функций-членов, конструкторов) полиморфизм.
- •40. Пример описания класса на базе одиночного наследования.
- •41. Функции-шаблоны. Назначение, описание, использование.
- •42. Пример описания и вызова функции-шаблон для суммирования элементов массива.
- •45. Характеристика пространства имен.
- •46. Описание и использование пространства имен (на примере).
- •47. Понятие исключительная ситуация и способы обработки исключений.
- •50. 51.Синтаксис и использование команды try, catch. Варианты использования catch. Генерация исключений командой throw.
- •52. Варианты генерации и обработки исключений.
- •Istream iostrim ostream
- •Ifstream fstream ofstream
- •64. Пример создания и заполнения файла.
- •65. Пример открытия и чтения содержимого файла.
- •66. Пример заполнения файла записями (значение-значение, размещенными в полях 20 и 30 позиций, с прижатием соответственно влево и вправо).
1. Отличительные особенности C++.
1)работа с объектами и классами. Новые библиотеки, которые по основному составу одинаковы
Пример: math.h -> math (новая) cmath (старая)
2)использование пространства имен namespace можно рассматривать как сферу видимости имен
Пример:
#include <iostream>
using namespace std; //стандартное пространство имен
int main
{
cin<<n; //описано в пространстве, если не подключит std, не доступна данная операция
}
3)комментарии все строчные
4)если нет в функции параметров то допустимо f(), а не f(void)
5)определен тип bool и соответствующие константы true и false
6)допустима перегрузка функций, методов класса, операторов класса (все это виды статического полиморфизма).
7)наличие средств управления исключениями(try, false, catch)
8)наличие новых видов функций (функции методы (в классе), функции операторы, виртуальные и чисто виртуальные функции).
9)специальные методы класса (конструкторы и деструкторы).
10)наличие новых средств управления памятью new и delete
11)новый тип – ссылочный
2.Операторы new, delete.
Новые средства распределения памяти. Выполняют те же функции что и malloc, calloc и free.
Эти операторы позволяют динамически распределять память для любых типов данных, и используются для выделения и освобождения памяти в ходе выполнения программы. Оператор new – выделение памяти, delete – освобождение памяти.
Пример:
int *p;
p= new int; //выделяется одна ячейка
p=new int(10);//инициализируется ячейка
p=new int[10];//выделяется10 ячеек
delete (p); //удаляется 1 ячейка
delete [](p);
3.Особенности функций С++.
Чтобы избежать дублирования функции, C++ позволяет вам определять несколько функций с одним и тем же именем. В процессе компиляции C++ принимает во внимание количество аргументов, используемых каждой функцией, и затем вызывает именно требуемую функцию. Предоставление компилятору выбора среди нескольких функций называется перегрузкой.
• Перегрузка функций позволяет вам использовать одно и то же имя для нескольких функций с разными типами параметров.
• Для перегрузки функций просто определите две функции с одним и тем же именем и типом возвращаемого значения, которые отличаются количеством параметров или их типом.
Перегрузка функций является особенностью языка C++, которой нет в языке С. Перегрузка функций достаточно удобна и может улучшить удобочитаемость программ.
4. Перегрузка функций.
Перегрузка – механизм (средство) С++. Которое реализует принцип полиморфизма.
Полиморфизм – один и тот же интерфейс используется в одних и тех же контекстах. Один и тот же интерфейс, но использование реализации зависит от сигнатуры. Сигнатура – количество аргументов, их типы и порядок следования в функции. !не должно быть функции с одинаковой сигнатурой.
Правила вызова перегруженной функций:
1)Ищет функцию по строгому совпадению сигнатур.
2)если такая не найдена, то компилятор просматривает перегруженные функции в порядке описания и ищет ближайшую подходящую, используя правила приведения типов.
3)если пользователь хочет вызвать конкретную функцию из перегруженный, то он в вручную может привести тип. Пример: int x; -> (float)x
4) если подходящая функция не найдена, компилятор выдает ошибку.
Пример:TO_SET(int, int, int);TO_SET(int, int);TO_SET(int);TO_SET(char);
5. Ссылки. Назначение и особенности использования.
Ссылочный тип – новый тип, который позволяет установить устранить влияние указателя при работе с функцией.
Ссылочный тип напоминает указатель, но если создать объект типа ссылка, то существенное отличие между ними – к указателям применяется операции разыменования, ссылка не имеет адреса. Во всех других действиях ссылка ведет себя как обычная переменная. Но при передаче ее в функцию – как указатель.
Нельзя получить адрес ссылки, нельзя ссылаться на ссылку, недопустимы массивы ссылок. Ссылка должна быть инициализирована до момента использования.
Ссылка используется для передачи значения в функцию без копирования и возращения значения по ссылке.
Оператор ++ применяется к самому значению, а не к адресу.
<тип> &<имя>
Пример:
int x;
int &y=x;
x++;
cout<< y;
y++;cout<<y;
6.Ссылки и указатели.
Ссылочный тип напоминает указатель, но если создать объект типа ссылка, то существенное отличие между ними – к указателям применяется операции разыменования, ссылка не имеет адреса. Во всех других действиях ссылка ведет себя как обычная переменная. Но при передаче ее в функцию – как указатель.
Нельзя получить адрес ссылки, нельзя ссылаться на ссылку, недопустимы массивы ссылок. Ссылка должна быть инициализирована до момента использования.
Ссылка используется для передачи значения в функцию без копирования и возращения значения по ссылке.
Оператор ++ применяется к самому значению, а не к адресу.
<тип> &<имя> - ссылка
<тип> *<имя> - указатель
7. Использование ссылок в функциях.
Ссылка используется для передачи значения в функцию без копирования и возращения значения по ссылке.
Ссылочный тип напоминает указатель, но если создать объект типа ссылка, то существенное отличие между ними – к указателям применяется операции разыменования, ссылка не имеет адреса. Во всех других действиях ссылка ведет себя как обычная переменная. Но при передаче ее в функцию – как указатель.
Пример:
f(int *);
main()
{
int x=30;
f(&x);
}
f(int *p)
{
(*p)++;
cout<<(*p);
}
f(int &)
main()
{
int x=30;
f(x);
}
f(int &p)
{
p++;
cout<<p;}