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

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

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

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

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

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