据我所知,引用在其生命周期内只能引用一个对象。 然而,下面的代码编译正确..尽管我已经更改了引用的对象..输出是: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;
}
最佳答案
正确的思考方式是,引用是它所引用的对象。因此,如果您这样做:
A& ref = a;
ref = b;
由于 ref
是 a
,所以你正在做的是:
a = b;
关于c++ - 一个引用在其生命周期内可以引用多个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629956/