class parent{
public:
virtual test(){
cout < < "from parent " < <endl;
};
};
class son1:public parent{
public:
virtual test(){
cout < < "from son1 " < <endl;
};
};
class son2:public parent{
public:
virtual test(){
cout < < "from son2 " < <endl;
};
};
void main(){
son1 s1;
son2 s2;
parent& p=s1;
p.test();
p=s2; //(1)没有改变
p.test();
int j=1, k=2;
int & i = j;
cout < <i < <endl;
i = k; //(2)却改变了
cout < <i <endl;
}
输出结果:
from son1
from son1
1
2
如果理解了在多态中虚函数表的地址是所有对象共享的。
对这个结果就不会困惑。