title: Redefinition of operator << in C++
body: <p>I know this question might be stupid, but i am new in C++ and i have a lot of problems with redefinitions of operands.
  What i`m trying to do is to redefine the operand &lt;&lt; to print my class "Person" information but it appears compiling error:</p>
  
  <pre><code>class Person {
  private:
       string name;
       unsigned long personId;
       string address;
  public:
      Person(string name2,unsigned long id,string adr) {
      name = name2;
      personId = id;
      address = adr;
  }
  void operator&lt;&lt;(Person person) {
       cout&lt;&lt;"Name: "&lt;&lt;person.name&lt;&lt;"  Person ID:  "&lt;&lt;person.personId&lt;&lt;"  Person address:  "&lt;&lt;person.address&lt;&lt;endl;
   }
  }
  
  int _tmain(int argc, _TCHAR* argv[])
  {
       Person person("Steven",1212121212,"USA");
       cout&lt;&lt;person; //compiling error here
  
       return 0;
  }
  </code></pre>
  
  <p>What`s the right way to do this ? </p>