История изменений
Исправление 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(); ///тут неоднозачность на точке, но нам нет преград
}