Apr 04, 2014 10:50
А знаете, что мне больше всего не нравится в ООП?
Необходимость программирования в классе возможности наследования от этого класса "на будущее".
То есть, виртуальные функции.
Может, я ошибаюсь, поправьте, я уже несколько лет как ненастоящий сварщик.
Но вот есть у меня, скажем, class a { public: void foo(int); };
Класс хороший, но не мой. То есть, тот, кто его писал - писал для себя. Ему хватало. А вот мне не хватает и я хочу не переписывать класс, а сделать наследника, у которого foo() сможет принимать не только int, но и, скажем, float.
Я делаю новый класс-наследник и перегружаю функцию class b : public a { public: void foo(float); }; И долго удивляюсь, почему не могу вызвать b.foo(int);
Если же в классе а сделать функцию foo(int) виртуальной, все становится на свои места. Но это - изменение в базовом классе. Я не хотел менять базовый класс. А придется. И более того, виртуальные функции кушают память, сразу много.
Где я ошибаюсь?
Размышления,
Вопрос,
Программизмы