Well, it depends on the object. But objects are copied when you pass them push_back. You can verify this by adding debug code to the copy constructor. Therefore, if Object behaves well and saves separate copies separately, then foo1 can change the vector, which gets everything he likes.
, foo1 :
void foo1(std::vector<Object>::const_iterator start,
std::vector<Object>::const_iterator end);
...
foo1(objectVec.begin(), objectVec.end() - 5);
const_cast, , foo1 , const_iterators.