why private value of the obj can be changed by class instance?
<pre><code>#include&lt;iostream&gt;
using namespace std;

class A
{
    private:
        int value;
    public:
        A(int init):value(init){}
        void changevalue(A &amp;a){a.value = 100;}//why a's value can be changed?
        void printvalue(){cout &lt;&lt; value &lt;&lt; endl;}
};

int main(int argc , char *argv[])
{
    A a(2);
    A b(3);

    a.changevalue(b);
    b.printvalue();

    return 0;
}
</code></pre>

<p><strong>a</strong> is an instance of <strong>A</strong> class,with a private value named <strong>value</strong>,but why this private value can be changed? Is that the parameter list included in the scope of class? </p>
