Александр Терентьев (aterentiev) wrote,
Александр Терентьев
aterentiev

Categories:

Про ООП

А знаете, что мне больше всего не нравится в ООП?
Необходимость программирования в классе возможности наследования от этого класса "на будущее".
То есть, виртуальные функции.

Может, я ошибаюсь, поправьте, я уже несколько лет как ненастоящий сварщик.

Но вот есть у меня, скажем, class a { public: void foo(int); };

Класс хороший, но не мой. То есть, тот, кто его писал - писал для себя. Ему хватало. А вот мне не хватает и я хочу не переписывать класс, а сделать наследника, у которого foo() сможет принимать не только int, но и, скажем, float.

Я делаю новый класс-наследник и перегружаю функцию class b : public a { public: void foo(float); }; И долго удивляюсь, почему не могу вызвать b.foo(int);

Если же в классе а сделать функцию foo(int) виртуальной, все становится на свои места. Но это - изменение в базовом классе. Я не хотел менять базовый класс. А придется. И более того, виртуальные функции кушают память, сразу много.

Где я ошибаюсь?
Tags: Вопрос, Программизмы, Размышления
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 24 comments