Информация об изменениях

Сообщение Re[4]: Недоучки по настоящему ООП не освоили (из-за Basic и от 01.09.2025 11:01

Изменено 01.09.2025 11:18 rg45

Re[4]: Недоучки по настоящему ООП не освоили (из-за Basic и
Здравствуйте, so5team, Вы писали:

R>>И я бы не сказал, что это какая-то широкораспространённая проблема, которая создаёт массовые неудобства.


S>Речь не про проблему, а про определения и следование этим определениям.


А из какого определения (ООП или полиморфизма) следует, что вызовы consume_a и consume_b обязаны дать разные результаты? Что мешает реализовать D::f, например, вот так:

http://coliru.stacked-crooked.com/a/fe324739d29727b0

struct D : A, B
{
  void f() override {
    A::f();
    B::f();
    std::cout << "D::f" << std::endl;
  }
};


Как по-мне, то это просто частный случай, а не нарушение каких-то общих требований.
Re[4]: Недоучки по настоящему ООП не освоили (из-за Basic и
Здравствуйте, so5team, Вы писали:

R>>И я бы не сказал, что это какая-то широкораспространённая проблема, которая создаёт массовые неудобства.


S>Речь не про проблему, а про определения и следование этим определениям.


А из какого определения (ООП или полиморфизма) следует, что вызовы consume_a и consume_b обязаны дать разные результаты? Что мешает реализовать D::f, например, вот так:

http://coliru.stacked-crooked.com/a/fe324739d29727b0

struct D : A, B
{
  void f() override {
    A::f();
    B::f();
    std::cout << "D::f" << std::endl;
  }
};


Из общих соображений имя функции в совокупности с набором формальных параметром задают определенную семантику. Если одна и та же семантическая операция даёт один и тот же результат, то как это может противоречить принципам ООП? Как по-мне, то это просто частный случай, а не нарушение каких-то общих требований.