#cpp #алгоритм
Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (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("\n%s", F_object.get()); F_object.set("bbbbbbbbbb"); printf("\n%s", F_object.get()); FirstClass F_object2 = F_object; SecondClass S_object(); printf("\n%s", F_object.get()); return 0; }
Ответы
Ответ 1
Теперь создаете метод class SecondClass : public FirstClass { public: SecondClass(const char* str_value = "") : FirstClass (str_value) {} void findShortestWord() { //здесь работаем с str_value } }; И работаете на прямую с полем str_value. Но это не очень хорошо. Лучше скрыть это поле в private и реализовать в базовом классе простейшие операции, например доступ по индексу, и так далее. А уже в производном классе можно реализовать более специфическую логику вроде поиска и удаления самого короткого слова. И методы производного класса будут использовать только функции базового.
Комментариев нет:
Отправить комментарий