这就是别名现象啊,即多个引用可以同时指向一个对象。
每次执行func()实际上就改变了你传入的对象。
执行person1.func(person1);时
void func(MankindReference.m)  //此时m和person1指向同一个对象。
  {
    m.salary=2;
    salary=3;                 //最后salary=3改变的是调用者person1的成员,所以最后输出为3
}
同理执行person1.func(person2);时
void func(MankindReference.m)  //此时m和person2指向同一个对象。
  {
    m.salary=2;
    salary=3;                 //最后salary=3改变的是调用者person1的成员,所以最后输出为3
}