    #include <iostream>

    class Foo {
    public:
        int m_i;  // member variable, m_xxx
        Foo(int); // constructor taking an int.
    };

    static int s_i;

    Foo::Foo(int i_)   // arguments use _ suffix
    {
        int i = i_;    // local value of i
        i *= 3;
        m_i = i;       // we're assigning it the local value, not the argument.
    }

    int main()
    {
        int i = 1;
        Foo foo(2);
        s_i = 3;

        std::cout << "i = "<<i<<", foo.m_i = "<<foo.m_i<<", s_i = "<<s_i<< std::endl;
    }
