赋值操作符重载虚函数?
我写了下面的程序:
#include <iostream.h>
class CB{
public:
int a;
CB():a(0){};
CB(int aa):a(aa){};
virtual CB& operator=(CB& s){
cout<<"CB"<<endl;
a=s.a;
return *this;
}
};
class CD:public CB{
public:
CD(){};
CD(int bb):CB(bb){};
CB& operator=(CB& s){
cout<<"CD"<<endl;
a=s.a;
return *this;
}
};
当main函数为
int main(){
CD dd(1);
CB *bb=ⅆ
CD dd1;
dd1=*bb;
cout<<dd1.a<<endl;
return 0;
}
执行结果为:
CD
1
这没问题,与预想一样,但是当main函数为
int main(){
CD dd(1);
CB aa,*bb=ⅆ
CD dd1;
dd1=dd;
cout<<dd1.a<<endl;
return 0;
}
执行结果竟然是:
CB
1
而预想的应该是
CD
1
为什么呢?谢谢各位!