hI = &(i*10);
принимает адрес временного largeInt, который уничтожается сразу после ';'- поэтому hI
указывает на недопустимую память.
Когда вы умножаете два largeInt
, вы делаете , получаете новый экземпляр - это то, что делает умножение.Возможно, вы намеревались сделать operator*=
вместо этого?Это должно изменить существующий экземпляр, а не создавать новый.
Обратите внимание:
int L = 3, R = 5;
int j = L*R; // You *want* a new instance - L and R shouldn't change
L*=R; // You don't want a new instance - L is modified, R is unchanged
Кроме того, вы не должны использовать new
для создания largeInt в куче - просто сделайте так:
largeInt i = 10;
largeInt hi = i*10; // Create a temporary, copy construct from the temporary
Или:
largeInt i = 10;
largeInt hi = i; // Copy construction
hi *= 10; // Modify hi directly