Программист может определить смысл большинства операторов, принимающих операнды пользовательского типа.
Изменить стандартный смысл операторов для встроенных типов или ввести новый оператор невозможно. Имя оператора, определенного пользователем (перегруженного оператора), состоит из символа оператора, которому предшествует ключевое слово operator; например, имя функции, определяющей оператор +, выглядит как operator +.
Matrix operator+(const Matrix&, const Matrix&);
Примеры можно найти в определениях классов std::ostream, std::vector, std::complex и Matrix.
Перегрузить можно все операторы за исключением следующих:
?: . .* :: sizeof typeid
Функции, определяющие следующие операторы, должны быть членами класса:
= [ ] ( ) ->
Все остальные операторы можно определить и как члены-функции, и как самостоятельные функции.
Обратите внимание на то, что каждый пользовательский тип имеет оператор = (присваивание и инициализация), & (взятие адреса) и , (запятая), определенные по умолчанию.
При перегрузке операторов следует проявлять умеренность и придерживаться общепринятых соглашений.
Перечисления
Перечисление (enumeration) определяет тип, содержащий набор именованных значения (перечислителей).
enum Color { green, yellow, red };
По умолчанию первый перечислитель равен нулю 0, так что green==0, а остальные значения увеличиваются на единицу, так что yellow==1 и red==2. Кроме того, можно явно определить значение перечислителя.
enum Day { Monday=1, Tuesday,Wednesday };
Итак, Monday==1, Tuesday==2 иWednesday==3.
A. 12. КЛАССЫ
1115
Отметим, что перечислители принадлежат не области видимости своего перечисления, а охватывающей области видимости.
int x = green; // OK
int y = Color::green; // ошибка
Перечислители и значения перечислений неявно преобразовываются в целые числа, но целые числа не преобразовываются в типы перечислений неявно.
int x = green; // OK: неявное преобразование Color в int
Color c = green; // OK
c = 2; // ошибка: нет неявного преобразования
// int в Color
c = Color(2); // OK: (непроверяемое) явное преобразование
int y = c; // OK: неявное преобразование Color в int
Классы
Класс (class) — это тип, для которого пользователь определил представление его объектов и операции, допустимые для этих объектов.
class X { public:
// пользовательский интерфейс private:
// реализация
};
Опубликовал katy
May 03 2015 11:59:17 ·
0 Комментариев ·
3117 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.