#include <iostream>
#include "refstack.h"

using namespace std;

int main()
{
    stack<double> d1;
    d1.push(3.14);    d1.push(4.14);    d1.push(5.14);
    cout << d1 << endl;
    stack<double> d2(d1);   // másoló konstruktor másolás nélkül
    cout << d1.test_address() << ", " << d2.test_address() << endl;

    while ( ! d1.empty() )
        cout << "pop: " << d1.pop() << endl;

    cout << d1.test_address() << ", " << d2.test_address() << endl;

    d1.push(6.14);  // másolás itt
    cout << d1.test_address() << ", " << d2.test_address() << endl;
    cout << d1 << endl;
    cout << d2 << endl;

    d1 = d2;   // értékadás másolás nélkül
    cout << d1.test_address() << ", " << d2.test_address() << endl;
    cout << d1 << endl;

    return 0;
}

/* Output:

[ 3.14, 4.14, 5.14 ]
0x804a6b8, 0x804a6b8
pop: 5.14
pop: 4.14
pop: 3.14
0x804a6b8, 0x804a6b8
0x804a720, 0x804a6b8
[ 6.14 ]
[ 3.14, 4.14, 5.14 ]
0x804a6b8, 0x804a6b8
[ 3.14, 4.14, 5.14 ]

*/