Re[15]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 04.11.19 15:57
Оценка: :)
Здравствуйте, B0FEE664, Вы писали:

S>>Так что еще раз: А каким боком виртуальность функций к целому или не целому объекту?


BFE>Если у вас есть указатель на базовый объект, то этот указатель указывает только на часть объекта, а не на весь (целый) объект. Чтобы добраться до целого объекта можно использовать виртуальные методы, тогда (внутри метода) будет доступна та часть объекта, которая видна для типа, где этот виртуальный метод определён.


Неверно. Виртуальный метод определяет поведение, а не то, к какой части объекта вы через него можете получить доступ.

BFE>Допустим у нас есть два типа C и B. Вы можете выделить общую часть и положить её в A, затем отнаследовать C и B от А, добавить виртуальные методы. Но как вы это будете использовать?


Сдается мне, за рассказывание вам элементарных вещей нужно брать деньги.

Вот наглядный пример:
class abstract_launcher {
public:
  void launch_rockets() = 0;
  ...
};

class launcher_commander {
  abstract_launcher & launcher_;
  ...
public:
  void run() {
    while(...) {
      if(target_detected()) launcher_.launch_rockets();
      ...
    }
  }
  ...
};

class vehicle_based_launcher : public abstract_launcher {
  ...
};

class ship_based_launcher : public abstract_launcher {
  ...
};

int main() {
#if VEHICLE_BUILD
  vehicle_based_launcher launcher{...};
#else if SHIP_BUILD
  ship_based_launcher launcher{...};
#else ...
#endif

  launcher_commander commander{launcher};
  commander.run();
  ...
}


S>>>>Есть ощущение, что вам матчасть нужно сперва подучить.

BFE>>>Это иллюзия.
S>>Вы себе сильно льстите.
BFE>Не так сильно, как вы думаете. У меня рейтинг 46, а у вас 58.

Сильно. Поскольку речь шла вообще не о знании C++. Но вы даже этого не смогли понять.

S>>Вот и получается, что отсутствие динамической памяти вообще никак не превращает современный C++ в Си с классами. Поэтому у вас в исходном утверждении ошибка. Что и определяет все последующие заблуждения.

BFE>Вообще-то я такого не утверждал.

Утверждали. И вам тут уже несколько человек указали на это.

BFE>Т.е. получается С++ без исключений, без контейнеров, без умных указателей. И это следствие только одного требования.


Вы еще и читать не умеете? Контейнеры вы можете использовать, но не из STL.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.