Suppose I create two vectors, one on the heap and one on the stack:
Vector<int> vector1;
Vector<int>* vector2 = new Vector<int>;
I then pass vector1 into two functions, say, foo1(Vector<int>) and foo2(Vector<int>&). I also pass vector2 into foo3(Vector<int>*).
Since I'm new to C++, I'm rather confused by the difference in behaviours here.
- Am I right to say that for - foo1, the entire- vector1gets copied, and for- foo2, only the reference to- vector1gets passed into the function?
- But isn't - vector1, declared on the stack, supposed to be inaccessible anywhere else (i.e. from inside- foo2) except the scope in which it was created?
- Also, does modifying the contents of - vector1inside- foo1,- foo2affect the original vector?
- And is vector1automatically destroyed at the end of its scope, or do we have to delete it manually?
 
     
     
     
    