Создать иерархию классов представляющих простое наследование. Базовый
класс – строка символов (char *). Производный класс – методы,
работающие с данными базового класса. Реализовать в производном классе
метод – поиска и удаления самого короткого слова в строке базового
класса
Где мне нужно искать и удалять слово? Я реализовал наследование, создается класс на основе базового. Я инициализировал базовый и производный. Теперь где мне нужно искать и удалять слово? В производном, в переменной производного, или в производном, в переменной базового? В задании написано: "в строке базового класса", мне нужно из производного произвести поиск и удаление в базовом, или это означает что я унаследовал переменную базового и теперь в производном должен это сделать в переменной производного?
#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 и реализовать в базовом классе простейшие операции, например доступ по индексу, и так далее. А уже в производном классе можно реализовать более специфическую логику вроде поиска и удаления самого короткого слова. И методы производного класса будут использовать только функции базового.
Комментариев нет:
Отправить комментарий