I have the following code:
#include <iostream>
using namespace std;
struct S {
    S(int i): I(i) { }
    int & v () { return I; }
    private :
    int I;
};
S s1 (1);
int main() {
    cout << s1.v() << "\n";
    return 0;
}
And I get the output:
1
I am confused as  to how it is working. For example with s1 it is calling the constructor S(int i) but how is it sub-classing I and calling its constructor when there is no I class and how is the private variable I getting assigned a number when there has been nothing assigned to it? Also, if v() returns int& (a reference therefore, I would think it would print out a memory location but it gives 1 consistently).
Sorry if this sounds stupid can't figure it out.
 
     
    