title: why private value of the obj can be changed by class instance?
body: <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>