Как создать объект такого же класса, как и текущий?
Например:
class A
{
virtual public A MethodFoo() {...}
}
Пусть MethodFoo возвращает объект класса A. Необходимо, чтобы его наследник class B : A при вызове B.MethodFoo() возвращал не A, а B. Без перекрытия метода в B. Т. е. на лету взять текущий класс и создать объект этого типа.