据我所知,引用在其生命周期内只能引用一个对象。但是,下面的代码可以正确编译。虽然我已经更改了引用的对象。输出是:1。它如何正确编译?
谢谢石然
class A{
private:
int a;
public:
A(int a):a(a){}
virtual ~A(){}
virtual void f()const {cout<<a<<endl;}
};
class B: public A{
private:
int b;
public:
B(int Ina,int Inb):A(Ina),b(Inb){}
virtual void f()const {cout<<b<<endl;}
};
int main(){
B b(1,2);
A a(5);
A& ref=a;
ref=b;
ref.f();
return 0;
}