Почему конструктор присваивания не присваивает переменной значение суммы двух других переменных?

Конструктор присваивания в C++ (конструктор копирования) автоматически создается компилятором, если вы не определили его явно в своем классе. Он используется для создания копии объекта при инициализации одного объекта существующим другим объектом. Однако, конструктор присваивания не присваивает переменной значение суммы двух других переменных потому, что он предназначен для копирования объекта, а не для арифметических операций.

Для присвоения переменной значение суммы двух других переменных вам необходимо перегрузить оператор присваивания (operator=) в вашем классе. Перегрузка оператора присваивания позволит вам определить желаемое поведение при присваивании значений объектов вашего класса. Например, если у вас есть класс Number с двумя переменными int a и int b, и вы хотите, чтобы при присваивании одного объекта другому происходило сложение их значений, вам нужно определить перегруженный оператор присваивания в классе Number.

Пример перегрузки оператора присваивания для класса Number:

class Number {
public:
    int a;
    int b;

    Number& operator=(const Number& other) {
        this->a = this->a + other.a;
        this->b = this->b + other.b;
        return *this;
    }
};

Теперь при использовании оператора присваивания = для объектов класса Number, их значения будут складываться:

Number num1{1, 2};
Number num2{3, 4};

num1 = num2; // num1.a = 4, num1.b = 6

Таким образом, конструктор присваивания не выполняет операцию сложения значений переменных, это достижимо с помощью перегрузки оператора присваивания.