'Clarification about function calls in cout needed

i'm doing an online c++ learning course with quiz. The last output line of this snippet is to be determined (comments added by me). Correct answer: 10. My question: why 10 and not 11? Calling a(b) swaps the two variables, so why is the last a.a.b 0 and not 1? / Why does the a.b() in cout not affect the a.a.b?

#include <iostream>
using namespace std;

class classA {
public:
    classA() { st.f = st.p = 1; }
    struct { int f, p; } st;
    int bfunc(void);
};

int classA::bfunc(void) { int x = st.f; st.f = st.p; st.p = x; return x; };

int main()
{
    classA a;
    a.st.f = 0;
    cout << a.st.f << a.st.p << endl; //01
    a.bfunc();
    cout << a.st.f << a.st.p << endl;  //10
    a.bfunc();
    cout << a.st.f << a.st.p << endl; //01
    a.bfunc();
    cout << a.st.f << a.st.p << endl; //10
    cout << a.bfunc() << a.st.p << endl; //10
    return 0;
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source