Неправильно сравнивает 2 массива, вместо false
(-
) выдает true
(+
). В чем проблема? (Функция помечена комментарием)
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
class MyArray
{
int SizeOfArray;
int* Arr;
public:
MyArray() : SizeOfArray(0), Arr(0)
{ }
MyArray(int SizeOfArray)
{
this->SizeOfArray = SizeOfArray;
Arr = new int[SizeOfArray];
for (int i = 0; i < SizeOfArray; i++)
{
Arr[i] = 0;
}
}
void ShowArray()
{
for (int i = 0; i < SizeOfArray; i++)
{
cout << Arr[i] << " ";
}
cout << endl;
}
int& operator[](int);
bool operator==(MyArray);
MyArray operator=(MyArray);
};
int main()
{
setlocale(LC_ALL, "rus");
MyArray o1(5), o2(5);
o1[0] = 5;
o1[2] = 5;
o1[1] = 5;
o1[3] = 5;
o1[4] = 5;
o2[0] = 5;
o2[2] = 5;
o2[1] = 5;
o2[3] = 3;
o2[4] = 6;
o1.ShowArray();
o2.ShowArray();
if (o1 == o2)
{
cout << "+" << endl;
}
else
cout << "-" << endl;
o1 = o2;
o1.ShowArray();
o2.ShowArray();
system("pause");
return 0;
}
int& MyArray::operator[](int i)
{
return Arr[i];
}
bool MyArray::operator==(MyArray obj2) //неправильный результат работы этой функции
{
if (SizeOfArray != obj2.SizeOfArray)
{
return false;
}
else
{
for (int i = 0; i < SizeOfArray; i++)
{
if (Arr[i] != obj2.Arr[i])
{
return false;
}
else
return true;
}
}
}
MyArray MyArray::operator=(MyArray obj2)
{
for (int i = 0; i < SizeOfArray; i++)
{
Arr[i] = obj2.Arr[i];
}
return *this;
}
Попробуйте изменить код:
bool MyArray::operator==(const MyArray& obj2) const
{
if (SizeOfArray != obj2.SizeOfArray)
{
return false;
}
else
{
for (int i = 0; i < SizeOfArray; i++)
{
if (Arr[i] != obj2.Arr[i])
{
return false;
}
}
return true;
}
}
Почему так - понятно? :)
Виртуальный выделенный сервер (VDS) становится отличным выбором
ЗдравствуйтеНасколько я знаю ОС сама выделяет память под кучу, но как тогда работать с памятью если мы незнаем сколько ее в куче?
Имеется приложение, которое записывает звук и сохраняет его в памяти устройстваПри первом открытии активити, приложение выдало запрос на разрешение...
Добрый деньОчень надо сделать следующее: создать stage, который будет: undecorated, максимального размера, т