Я думаю, что понимаю концепцию виртуальных методов и vtables, но не понимаю, почему существует разница между передачей объект в качестве указателя (или ссылки) и передавая его по значению (какой вид сбрасывает vtable или что-то в этом роде?)
Почему что-то вроде этого работает:
Material* m = new Texture;
poly->setMaterial(m);
// methods from Texture are called if I keep carrying the pointer around
А не это?:
Material m = Texture();
poly->setMaterial(m);
// methods from Material are called if I pass the value around