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

21 Авг 2019 в 07:00
264 +1
1
Ответы
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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир