Я просто спросить про указатели C++ (изучаю С++).

@channel_nullptr
Основное из главы 11. Прата. Перегрузка операций с помощью operate,  основная суть в том, что можем использовать стандартные операторы (+, -, *, << и так далее) с пользовательскими объектами класса. Перегрузка операций. class Distance { private:     int meters;     int centimeters; public:     Distance(int m = 0, int cm = 0) : meters(m), centimeters(cm) {}     //(1)     Distance operator+(const Distance & other) const {         Distance result;         result.centimeters = centimeters + other.centimeters;         result.meters = meters + other.meters + result.centimeters / 100;         result.centimeters %= 100;         return result;     }     //(2)     Distance operator-(const Distance & other) const {         int total1 = meters * 100 + centimeters;         int total2 = other.meters * 100 + other.centimeters;         int diff = total1 - total2;         return Distance(diff / 100, diff % 100);     }     //(3)     Distance operator*(double factor) const {         double total = (meters * 100 + centimeters) * factor;         int totalCm = int(total + 0.5);         return Distance(totalCm / 100, totalCm % 100);     }         void show() const {         std::cout << meters << " m " << centimeters << " cm";     } }; (1) Принцип работы operator. Можно поделить выражение (такое как a = a + b или c = a + b) на две части: левую и правую. Как раз-таки мы работаем с левой частью, то есть “a”, чтобы было попроще можно это объяснить по другому: мы перегружаем “+”значит левая часть будет слева от “+”, потому что может быть и такое выражение – d = a+ b + c (или для упрощения d = ((a + b)+c) ), что значит первая левая часть будет “a”( a.operator+(b)), а после – “a+b” ((a + b).operator+(c)). Здесь есть один из важных моментов. Как мы можем наблюдать, то operator+ возвращаем константный объект типа Distance. Может показаться, что можно было бы сделать код проще и эффективнее, то есть не создавать локальный объект Distance result, а сразу же изменять левую часть. То есть записать следующим образом: (4) Distance Distance::operator+(const Distance& other) {     centimeters = centimeters + other.centimeters;     meters += other.meters + centimeters / 100;     centimeters %= 100;     return *this; }Для понимания, что делается в коде (4). Складываем сантиметры centimeters, после вычисляем метры (складываем метры с метрами) и делим сантиметры на 100, чтобы получить метры с сантиметров. Далее, чтобы убираем «лишние сантиметры» с помощью деления на модуль (допустим у нас скопилось 132 снатиметра, 132 % 100 = 32 осталось, 100 сантиметров ушло). А теперь, тот важный момент (4). Мы сразу изменяем левый операнд и его возвращаем, тогда получается следующая ситуация, допустим, у нас есть выражение a =  b + c, тогда операнд b изменятся, посмотрим:
Если у вас установлено приложение,
вы можете сразу перейти в канал