多态中虚函数表的地址是所有对象共享的

 

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 

 

如果理解了在多态中虚函数表的地址是所有对象共享的。

对这个结果就不会困惑。

 

 

posted @ 2012-06-08 00:50  qimi  阅读(278)  评论(0编辑  收藏  举报