LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

давай попроще трейт эмулировать, такой вот плюсово-растовый псевдокод

trait Printable {
  void print(self&);
}

implement Printable for int {
  void print(int& self) { print_int(self) }
}

implement Printable for float {
  void print(float& self) { print_float(self) }
}

///вызов через трейт - тут будет трейт-обьект
void test1 (Printable &val) {
  val.print(); /// будет вызов val.table[0](val.obj)
}

void test2 () {
  ///тут вызовы чисто статические
  10.print();
  (1.1).print(); ///тут неоднозачность на точке, но нам нет преград

  //тут вызов через пару.
  test1(10); /// тут будет создана пара на стеке из ссылки на 10(не надо спрашивать как), и вирт таблицы Printable для int, и передана в test1

}

Исправление alysnix, :

давай попроще трейт эмулировать, такой вот плюсово-растовый псевдокод

trait Printable {
  void print(self&);
}

implement Printable for int {
  void print(int& self) { print_int(self) }
}

implement Printable for float {
  void print(float& self) { print_float(self) }
}

///вызов через трейт - тут будет трейт-обьект
void test1 (Printable &val) {
  val.print(); /// будет вызов val.table[0](val.obj)
}

void test2 () {
  ///тут вызовы чисто статические
  10.print();
  (1.1).print(); ///тут неоднозачность на точке, но нам нет преград
  test1(10); /// тут будет создана пара на стеке из ссылки на 10(не надо спрашивать как), и вирт таблицы Printable для int, и передана в test1

}

Исходная версия alysnix, :

давай попроще трейт эмулировать, такой вот плюсово-растовый псевдокод

trait Printable {
  void print(self&);
}

implement Printable for int {
  void print(int& self) { print_int(self) }
}

implement Printable for float {
  void print(float& self) { print_float(self) }
}

///вызов через трейт - тут будет трейт-обьект
void test1 (Printable &val) {
  val.print(); /// будет вызов val.table[0](val.obj)
}

void test2 () {
  ///тут вызовы чисто статические
  10.print();
  (1.1).print(); ///тут неоднозачность на точке, но нам нет преград
}