Страницы

Поиск по вопросам

понедельник, 18 февраля 2019 г.

Помогите понять условие задания

Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (char *). Производный класс – методы, работающие с данными базового класса. Реализовать в производном классе метод – поиска и удаления самого короткого слова в строке базового класса
Где мне нужно искать и удалять слово? Я реализовал наследование, создается класс на основе базового. Я инициализировал базовый и производный. Теперь где мне нужно искать и удалять слово? В производном, в переменной производного, или в производном, в переменной базового? В задании написано: "в строке базового класса", мне нужно из производного произвести поиск и удаление в базовом, или это означает что я унаследовал переменную базового и теперь в производном должен это сделать в переменной производного?
#include #include #include
using namespace std;
class FirstClass { protected: char* str_value; public: //FirstClass() {}
FirstClass(const char* value = ""):str_value(0) { set(value); }
FirstClass(const FirstClass &obj):str_value(0) { set(obj.str_value); };
~FirstClass() {delete[] str_value;}
void set(const char* value) { delete[] str_value; str_value = new char[strlen(value)+1]; strcpy(str_value, value); }
const char* get() const { return str_value; } };
class SecondClass : public FirstClass { public: SecondClass(const char* str_value = "") : FirstClass (str_value) {} void findShortestWord() { str_value = "kokoko"; } };
int main() { FirstClass F_object("aaaaaaaaaa");
printf("
%s", F_object.get());
F_object.set("bbbbbbbbbb");
printf("
%s", F_object.get());
FirstClass F_object2 = F_object;
SecondClass S_object();
printf("
%s", F_object.get());
return 0; }


Ответ

Теперь создаете метод
class SecondClass : public FirstClass { public: SecondClass(const char* str_value = "") : FirstClass (str_value) {} void findShortestWord() { //здесь работаем с str_value } };
И работаете на прямую с полем str_value.
Но это не очень хорошо. Лучше скрыть это поле в private и реализовать в базовом классе простейшие операции, например доступ по индексу, и так далее. А уже в производном классе можно реализовать более специфическую логику вроде поиска и удаления самого короткого слова. И методы производного класса будут использовать только функции базового.

Комментариев нет:

Отправить комментарий