HW кажется слишком простым — перегрузка оператора эквивалентности как члена и функции, не являющейся членом

Назначение заключается в создании класса, который реализует динамическую строку (массив символов с нулевым символом в конце). Конструктор по умолчанию должен создавать пустой массив, а также должен быть перегруженный конструктор, который создает массив размером n. Также должна быть функция это увеличит массив до большего размера (он сказал, что это должно быть в классе, но мы не будем использовать его до более позднего назначения). Мы также должны создать две версии этого класса. В одной версии мы будем перегружать оператор эквивалентности как функцию-член, а во второй версии мы будем перегружать оператор эквивалентности как функцию, не являющуюся членом.

Что-то мне кажется странным, потому что это кажется легким.

Для версии члена я установил, чтобы это возвратило истину, если два размера класса были равны.

bool CSTR::operator ==(const CSTR & rhs) {

return (size == rhs.size);
}

Для не-членской версии я просто создал функцию-член, которая возвращает ее размер в виде целого числа, а затем сравнивает их, когда оператор перегружен.

bool operator ==(const CSTR2 & CSTR2_1, const CSTR2 & CSTR2_2) {

return (CSTR2_1.getSize() == CSTR2_2.getSize());
}

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

Вот код, который я пытаюсь использовать для сравнения cstring. Примечание: в описании присваивания нет ничего, что говорило бы о вводе значений в cstrings.

#include "CSTR.h"#include <cstring>
using namespace std;class CSTR {
public:
CSTR();
CSTR(unsigned int n);
~CSTR();bool operator ==(const CSTR & rhs);
private:
unsigned int size;
char *elems;

bool grow(unsigned int newSize);
};

=================================

CSTR::CSTR() {

size = 0;
elems = new char [0];
}

CSTR::CSTR(unsigned int n) {
if (n > 0) {
size = n;
elems = new char [size];
}
else {
size = 0;
elems = new char [0];
}
}

CSTR::~CSTR() {

delete [] elems;
}

bool CSTR::operator ==(const CSTR & rhs) {

return ((elems == rhs.elems) == 0);
}

Я инициализировал два объекта CSTR с разными размерами, и когда я проверяю на эквивалентность, он возвращает, что они равны.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector