Итак, у меня есть класс под названием HugeInt
, который хранит динамический массив целых чисел с каждым местом, соответствующим десятичному месту (arr [0] = 2^0, arr [1] = 2^1 ...). Поэтому у меня также есть этот метод reverse
, который меняет числа. Но в основном это дает два разных результата, может ли кто-нибудь помочь? DynArray
- это динамический класс массива, который я создал. Он просто содержит массив int, который изменяется на основе, если мы добавляем к массиву. (Невозможно использовать векторы)Почему этот метод дает два разных результата?
HugeInt HugeInt::reverse(){
HugeInt hi;
for (int i = 0; i < this->size; i++){
hi.dyn.add(this->dyn[this->size - 1 - i]);
}
return hi;
}
Мои функции печати:
void HugeInt::print(){
dyn.print();
}
void DynArray::print(){
for (int i = 0; i < nextIndex; i++){
std::cout << arr[i];
}
}
мой оператор =:
HugeInt& HugeInt::operator=(const HugeInt &b1)
{
this->dyn = b1.dyn;
this->size = b1.size;
return *this;
}
Когда я запускаю это:
int main(int argc, char *argv[])
{
HugeInt hi4("123456");
hi4.print();
cout << endl;
cout << endl;
hi4.reverse().print();
cout << endl;
cout << endl;
hugeInt = hi4.reverse();
hugeInt.print();
}
я получаю эти результаты :
123456 654321 3854321
Почему последний результат отличается от второго результата? Я не привык к кодированию в C++, поэтому я чувствую, что это может быть какая-то C++ вещь, которую я пропускаю?
ОБНОВЛЕНИЕ: ОК, поэтому я полностью потерян сейчас. Я изменил свой обратный(), чтобы:
HugeInt HugeInt::reverse()
{
return *this;
}
и мой главный как:
int main(int argc, char *argv[])
{
HugeInt hi4("123456");
hi4.reverse().print();
cout << endl;
cout << endl;
hugeInt = hi4.reverse();
hugeInt.print();
}
и получить результаты
123456 3223456
32 на таблице ASCII является 'Space' и 38 &, о чем он говорил раньше. Я так потерян!
Что происходит, когда вы удаляете 'this-> ~ HugeInt();'? (Кстати, вы почти никогда не должны называть деструктор вручную) –
Проблемы с конструкторами копирования и др.? Я не вижу ни одного –
Как сказал @JesseGood, почему вы его уничтожаете? – vidit