Как сделать разную реализацию одной и той же функции класса в C++? Предположим у нас есть некая модель, и допустим мы хотели чтобы по клику срабатывало какое-либо событие. Примерно такой класс позволит нам обработать нажатие (реализацию опустим):Class Model{
Model();
public:
void click();
}
Однако, определив эту функцию, мы не сможем заставить разные модели вести себя по разному.
Суть вопроса как раз заключается в том, чтобы для каждого экземпляра класса Model функция click () выполнялась по разному. А если ещё можно будет, переопределяя эту функцию, изменять количество и типы аргументов, то будет вообще хорошо. Всем заранее спасибо за ответы или предложения погуглить по ключевым словам (буду крайне признателен, если их озвучат)

21 Авг 2019 в 07:00
249 +1
0
Ответы
1

Вам следует использовать концепцию виртуальных функций и наследование в C++ для достижения нужного вам функционала.

Пример:

#include <iostream>
class Model {
public:
Model() {}
virtual void click() {
std::cout << "Default click implementation" << std::endl;
}
};
class CustomModel : public Model {
public:
CustomModel() {}
void click() override {
std::cout << "Custom click implementation" << std::endl;
}
};
int main() {
Model model1;
CustomModel model2;
model1.click();
model2.click();
return 0;
}

В данном примере класс CustomModel наследуется от базового класса Model, а функция click объявлена как виртуальная и переопределена в производном классе. В результате каждый экземпляр класса Model и CustomModel будет иметь свою собственную реализацию функции click, позволяя вам добиться нужной функциональности.

Ключевые слова для дальнейшего изучения: виртуальные функции, наследование, полиморфизм в C++.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир