Что такое арность? Таким вопросом задются новички, которые начинают знакомитсья с перегрузкой операций.
Для того, чтобы понять, что такое арность, нужно научиться понимать, что такое операция.
Операция — это действие над значениями, разрешённое типам
На самом деле у меня прям чувство, что если я выражусь заведомо неверно, многие новички меня поймут лучше, чем если бы я выразился астрономически точно. Операция — это действие над типом или действие между типами. Но коли уж технически в С++ непосредственно к типам операции не применяются, то всё-таки это действия над значениями типов.
C++
1
2
3
4
5
6
7
int+int// так нельзя, поэтому та формулировка, которая понятней, не точна
intx=10;
inty=20;
intz;
z=x+y;//так можно, операция здесь действие "плюс", плюс разрешён типам int int + int
В С++ нельзя создавать свои операции, можно использовать только существующие.
Во время перегрузки операций учитывают так называюму арность. Операции обычно разделяют на:
Унарные
Бинарные
Тернарную
И вот эти вот самые слова: "унарный", "бинарный", "тернарный" очень тяжело понимать некоторым новичкам. Я к таким новичкам сам отношусь: мне было очень сложно проникнуться арностью. На самом деле всё не так страшно и совсем не сложно.
Унарный — действие над
Бинарный — действие при слиянии
Унарный — это действие над одним значением. Примеры унарных упераций:
C++
1
2
3
4
intx=10;
x++;//операция ++
++x;//операция ++
--x;//операция --
Показанный код отображает, что действие (операция) выполняется над одним значением: над x. Такого вида операции называют унарными. Это как приклейка операции к значению с левой или с правой стороны.
Унарной операции нужна только одна сущность
Бинарный — это действие при слиянии. В зависимости от способа слияния двух значений. Конечный результат зависит от способа слияния. Операция в данном случае обозначает вид слияния: сложение, вычитание, умножение, взятия остатка и др.
C++
1
2
3
4
5
6
7
8
intx=10;
inty=20;
x=y;//слияние способом (операцией) присвоения
x+y;//слияние способом (операцией) сложения
x+x;//слияние способом (операцией) сложения
x/z;//слияние способом (операцией) деления
x*=10;//слияние способом (операцией) *=
Показанный код отображает, что способ слияния (в зависимости от используемой операции) выполняется над двумя значениям. Например, чтобы сложить число 5 с чем-то, то должно быть то самое что-то. Я не могу сказать: "5 прибавь к себе" и не закончить, если хочу что-то к пятёрке той прибавить. Мне нужно обозначить, что я должен прибавить. Таким образом получается, что для операции нужно две составляющие. Нуждающиеся в двух составляющих операции и называют бинарными.
Тернарный — это по аналогии с бинарным. В С++ есть одна тернарная операция:
C++
1
2
3
4
intx=10;
inty=10;
(1)?(2):(3);//тернарная операция ?: цифрами условно обозначены значения, но скомпилируется и в таком виде
При перегрузке операций преимущественно используют унарную и бинарную операции, тернарную операцию перегрузить нельзя. Поэтому перед тем, как приступите к перегрузке операций, хорошо бы понять тему арности, хотя бы унарность и бинарность.
Добавить комментарий