лекции программирование / 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 |