这就是别名现象啊,即多个引用可以同时指向一个对象。
每次执行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
}
每次执行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
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货