/*
CS371p: Quiz #15 (5 pts)
*/

/* -----------------------------------------------------------------------
1. What is the output of the following program?
   (4 pts)

A()
A(A) A(A) A(A) A(A) A(A) A(A) A(A) A(A)

push back
A(A) A(A) A(A) A(A) ~A() ~A() ~A()

assignment
=(A) =(A) =(A) =(A) A(A)

~A() ~A() ~A() ~A() ~A() ~A() ~A() ~A() ~A() ~A() ~A()
*/

#include <iostream> // cout, endl
#include <vector>   // vector

using namespace std;

struct A {
    A () {
        cout << "A() ";}

    A (const A&) {
        cout << "A(A) ";}

    ~A () {
        cout << "~A() ";}

    A& operator = (const A&) {
        cout << "=(A) ";
        return *this;}};

int main () {
    {
    A x;
    cout << endl;

    vector<A> y(5, x);
    vector<A> z(3, x);
    cout << endl << endl;

    cout << "push back" << endl;
    z.push_back(x);               // (2 pts)
    cout << endl << endl;

    cout << "assignment" << endl;
    z = y;                        // (2 pts)
    cout << endl << endl;
    }
    cout << endl;

    return 0;}


syntax highlighted by Code2HTML, v. 0.9.1