
лекции программирование / polevoy_cpp_2012_spring_lecture_02
.pdf
Перегрузка методов
• аналогично перегрузке функций
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 |