Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции программирование / polevoy_cpp_2012_spring_lecture_02

.pdf
Скачиваний:
26
Добавлен:
20.04.2015
Размер:
101.19 Кб
Скачать

Перегрузка методов

• аналогично перегрузке функций

18.02.2012

cppNewb.ru

21

Перегрузка конструктора

пример:

class Point

{

public:

Point(const int x, const int y); Point(const Point& point);

};

18.02.2012

cppNewb.ru

22

Деструктор

имя функции строиться из имени класса

не принимает аргументов

не возвращает значений

разрушает экземпляр

18.02.2012

cppNewb.ru

23

Деструктор (пример)

пример:

// В cpoint.h class CPoint

{

public:

~CPoint();

};

// В cpoint.cpp CPoint::~CPoint()

{

}

18.02.2012

cppNewb.ru

24

Форма записи выражений

традиционная форма a + b

префиксная форма

+ a b

пример:

a + b

operator+(a, b)

18.02.2012

cppNewb.ru

25

Операторная функция

имя начинается с ключевого слова operator, после которого идет сам оператор

пример:

operator+

operator++

объявление соответствует грамматике языка (количество и состав аргументов)

18.02.2012

cppNewb.ru

26

Перегрузка операторов

• функция-член (внутренняя)

пример:

T operator@(const T& rhs)

• функция-не-член (внешняя)

пример:

T operator@(const T& lhs, const T& rhs)

18.02.2012

cppNewb.ru

27

Приоритет операторов

приоритет операторов определен в стандарте языка

приоритет операторов не может быть

изменен

18.02.2012

cppNewb.ru

28

Унарный оператор

выражение @aa или aa@

нестатическая функция-член без аргументов

aa.operator@()

функция-не-член с одним аргументом operator@(aa)

18.02.2012

cppNewb.ru

29

Префиксная и постфиксная формы унарных операторов

префиксный оператор @aa

возвращает результат вычисления

пример:

++a

постфиксный оператор aa@

возвращает исходное значение аргумента

пример:

a++

18.02.2012

cppNewb.ru

30