引用可以在其生命周期中引用多个对象吗?

时间:2013-01-31 16:03:10

标签: c++

据我所知,引用在其生命周期中只能引用一个对象。 但是,下面的代码编译正确..虽然我已经更改了引用的对象..输出是: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;
}

3 个答案:

答案 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();

分配给引用相当于分配给原始对象。