据我所知,引用在其生命周期中只能引用一个对象。 但是,下面的代码编译正确..虽然我已经更改了引用的对象..输出是: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;
}
答案 0 :(得分:3)
考虑它的正确方法是引用 它引用的对象。因此,如果你这样做:
A& ref = a;
ref = b;
由于ref
a
,您所做的是:
a = b;
答案 1 :(得分:1)
参考文献在其整个生命周期中仅指一个参考者 您的代码所做的是将新值分配给原始refferant。
答案 2 :(得分:0)
您的主要功能与此相同:
B b(1,2);
A a(5);
a = b;
a.f();
分配给引用相当于分配给原始对象。