upcasting

Рассмотрим следующий фрагмент кода: class MyClass { } class MyClass2 : MyClass { } private void Foo(MyClass cl) { //cl is actually MyClass2 instance TestGeneric(cl); } private void TestGeneric<T>(T val) { //do smth } После вызова Foo(), T в TestGeneric является MyClass, а не MyCla...

EDIT: хорошо, как я вижу сейчас, это сильно меняет дело, поэтому более точный сценарий таков: Иерархия, которую я в настоящее время имею, несколько похожа на эту: class IBase() { virtual void Foo() = 0; }; class Base() : public IBase { virtual void Foo() { } }; class IDerived() { virtual void Bar() = 0;...

в чем разница между up-casting и down-casting относительно переменной класса? например, в следующем классе программы Animal содержит только один метод, но класс Dog содержит два метода, а затем как мы приводим переменную Dog к переменной Animal. если кастинг сделан, то как мы можем вызвать другой метод соба...