За тело конструктора в объявлении конструктора надо съездить автору линейкой по пальцам. Или это C#?
int для индексов объектов - лажа, нужно использовать size_t. Учебники, в которых авторы по привычке лепят int куда ни попадя - жарить в духовке до готовности. Температура - 451 по Фаренгейту.
Object getMeAnyObject(int i) - такая же лажа, нужно определить константный и неконстантый операторы индекса [].
В целом, попытка использовать list вместо vector - лажа.
По факту - с чего вы вообще взяли, что тут будет какая-то ссылка? Делая присваивание, вы выполняете копирование.
Ах да, еще одна Лажа Петровна:
Object o;
o = oc.getMeAnyObject(1);
Это ведь i like to move it move it! (два вызова - конструктор и присваивание) форменное. Как насчет
Object o=oc.getMeAnyObject(9000)? Это ведь даже сподвигнет компилятор на RVO и вообще выкинет одно из копирований.