When does the object Second go out of scope? If I leave the third cout statement I get a compiler error. Even when I surround the initialization of Second and the cout statements. 
#include <iostream>
using namespace std;
class MyArray{
public:
    int Size;
    int* data;
    MyArray(int s) : Size(s), data(new int[s]){}
    ~MyArray(){
        delete[](this->data);
    }
};
int main()
{
    MyArray First(20);
    First.data[0] = 25;
    MyArray Second = First;
    cout << First.data[0] << endl;
    cout << Second.data[0] << endl;
    cout << Second.data[0] << endl;
    system("PAUSE");
    return 0;
}
The runtime error:

 
     
     
    