Кратко про разность:
- Инфиксная запись: операнды окружены оператором (т.е.
a + b
). - Функциональная запись: оператор применяется как функция (т.е.
add(a, b)
).
Info
У нас есть возможность определить инфиксную запись для своих типов данных!
Пример с перегрузкой операторов
#include <iostream>
class Complex {
private:
double real, imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// Перегрузка оператора +
Complex operator+(const Complex &c) const {
return Complex(real + c.real, imag + c.imag);
}
// Функциональная запись
static Complex add(const Complex &c1, const Complex &c2) {
return c1 + c2;
}
void display() const {
std::cout << "(" << real << ", " << imag << ")" << std::endl;
}
};
int main() {
Complex c1(1, 2), c2(3, 4);
// Инфиксная запись
Complex sum = c1 + c2;
sum.display();
// Функциональная запись
Complex sumFunc = Complex::add(c1, c2);
sumFunc.display();
return 0;
}