Size: a a a

cxx.Дискуссионная

2020 March 07

а

а это кто in cxx.Дискуссионная
Т-34 85
а примеры есть?
trait Animal {
   fn make_sound()
}

struct Dog {

}

impl Animal for Dog {
   fn make_sound() {
       print!("bark");
   }
}

struct Cat {

}

impl Animal for Cat {
   fn make_sound() {
       print!("meow");
   }
}

fn make_sound_twice<T: Animal>(animal: T) {
   T.make_sound();
   T.make_sound();
}

fn main() {
   let dog1 = Dog { };
   let cat1 = Cat { };

   dog1.make_sound(); // bark
   cat1.make_sound(); // meow


   // Статический полиморфизм
   make_sound_twice(dog1) // barkbark
   make_sound_twice(cat1) // meowmeow
}
источник

а

а это кто in cxx.Дискуссионная
а собственно сейчас на плейграунд залью
источник

Т8

Т-34 85 in cxx.Дискуссионная
а это кто
trait Animal {
   fn make_sound()
}

struct Dog {

}

impl Animal for Dog {
   fn make_sound() {
       print!("bark");
   }
}

struct Cat {

}

impl Animal for Cat {
   fn make_sound() {
       print!("meow");
   }
}

fn make_sound_twice<T: Animal>(animal: T) {
   T.make_sound();
   T.make_sound();
}

fn main() {
   let dog1 = Dog { };
   let cat1 = Cat { };

   dog1.make_sound(); // bark
   cat1.make_sound(); // meow


   // Статический полиморфизм
   make_sound_twice(dog1) // barkbark
   make_sound_twice(cat1) // meowmeow
}
и где здесь полиморфизм? Никакого не вижу
источник

а

а это кто in cxx.Дискуссионная
а это кто
trait Animal {
   fn make_sound()
}

struct Dog {

}

impl Animal for Dog {
   fn make_sound() {
       print!("bark");
   }
}

struct Cat {

}

impl Animal for Cat {
   fn make_sound() {
       print!("meow");
   }
}

fn make_sound_twice<T: Animal>(animal: T) {
   T.make_sound();
   T.make_sound();
}

fn main() {
   let dog1 = Dog { };
   let cat1 = Cat { };

   dog1.make_sound(); // bark
   cat1.make_sound(); // meow


   // Статический полиморфизм
   make_sound_twice(dog1) // barkbark
   make_sound_twice(cat1) // meowmeow
}
источник

Т8

Т-34 85 in cxx.Дискуссионная
где тут апкаст?
источник

а

а это кто in cxx.Дискуссионная
Т-34 85
где тут апкаст?
В C++ полиморфизм делается через наследование и апкаст

В Java полиморфизм делается через наследование с апкастом или через интерфейса

В Rust полиморфизм делается через интерфейсы
источник

TS

Till Schneider in cxx.Дискуссионная
а это кто
В C++ полиморфизм делается через наследование и апкаст

В Java полиморфизм делается через наследование с апкастом или через интерфейса

В Rust полиморфизм делается через интерфейсы
источник

Т8

Т-34 85 in cxx.Дискуссионная
а это кто
В C++ полиморфизм делается через наследование и апкаст

В Java полиморфизм делается через наследование с апкастом или через интерфейса

В Rust полиморфизм делается через интерфейсы
я параметрический полиморфизм вижу. А полиморфизма подтипа - нет. Где виртуальные методы???
источник

а

а это кто in cxx.Дискуссионная
Функция принимает на вход какой-то объект типа T который реализует интерфейс Animal. У интерфейса Animal есть метод make_sound, значит можно вызвать этот метод у объекта типа T, вот и всё, никаких апкастов на надо
источник

а

а это кто in cxx.Дискуссионная
Т-34 85
где тут апкаст?
.
источник

Т8

Т-34 85 in cxx.Дискуссионная
а это кто
Функция принимает на вход какой-то объект типа T который реализует интерфейс Animal. У интерфейса Animal есть метод make_sound, значит можно вызвать этот метод у объекта типа T, вот и всё, никаких апкастов на надо
это не полиморфизм подтипов. Ты ооп не знаешь
источник

а

а это кто in cxx.Дискуссионная
а это кто
Функция принимает на вход какой-то объект типа T который реализует интерфейс Animal. У интерфейса Animal есть метод make_sound, значит можно вызвать этот метод у объекта типа T, вот и всё, никаких апкастов на надо
Разные типы могут по-разному реализовать make_sound, получается полиморфизм
источник

а

а это кто in cxx.Дискуссионная
Т-34 85
это не полиморфизм подтипов. Ты ооп не знаешь
Кроме полиморфизма подтипов существует полиморфизм интерфейсов. Это ты ооп не знаешь :)
источник

а

а это кто in cxx.Дискуссионная
в Rust нет полиморфизма подтипов, только полиморфизм интерфейсов
источник

Т8

Т-34 85 in cxx.Дискуссионная
а это кто
Кроме полиморфизма подтипов существует полиморфизм интерфейсов. Это ты ооп не знаешь :)
так, стоять. Что такое "статический полиморфизм"?
источник

TS

Till Schneider in cxx.Дискуссионная
а это кто
в Rust нет полиморфизма подтипов, только полиморфизм интерфейсов
Как и ооп в расте нет
источник

AE

Andrew Evseev in cxx.Дискуссионная
Т-34 85
так, стоять. Что такое "статический полиморфизм"?
Полиморфизм в компил-тайм. Он немного быстрее работает
источник

а

а это кто in cxx.Дискуссионная
Т-34 85
так, стоять. Что такое "статический полиморфизм"?
это когда конкретная функция выбирается во время компиляции а что
источник

Т8

Т-34 85 in cxx.Дискуссионная
Andrew Evseev
Полиморфизм в компил-тайм. Он немного быстрее работает
тогда пускай определится, это у неё в коде он, или подтипов
источник

Т8

Т-34 85 in cxx.Дискуссионная
а это кто
это когда конкретная функция выбирается во время компиляции а что
у тебя какой полиморфизм в примере?
источник