Object initializtion in C++ : Good evening! I've seen the following code snippet: `test()` function output is 6



 
    #include <iostream>

    using namespace std;

    int z = 0;
    class A{

    public:
        int a = 2;
        A(){
            a = 1; 
            z++;
        }
        A(const A& aa){
            a = 3;
            z += 2;
        }
        A& f(){return *this;}

    };

    void test(){
        {A a, b(a), c(A().f());}
        cout << z;

    }

    int main()
    {
        test();

        return 0;
    }

I understand what happens in all lines except object `c` initialization: `c(A().f())`? I'd would be glad, if you explain me this line? 