c++ - 一个引用在其生命周期内可以引用多个对象吗?

标签 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;
}

最佳答案

正确的思考方式是,引用它所引用的对象。因此,如果您这样做:

A& ref = a;
ref = b;

由于 ref a,所以你正在做的是:

a = b;

关于c++ - 一个引用在其生命周期内可以引用多个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629956/

相关文章:

c++ - 在 C 中解析命令行参数

c++ - Visual Studio 2010下的Socket编程,非托管C++

c++ - time.h 库默认函数 C++

c++ - 如何隐藏窗口的菜单栏?

c++ - x86-64 MSVC++/Intel C++ 更改 int、long 等的大小

c++ - Eclipse 实时错误检查已禁用

c++ - 在 qsort 之后识别项目/类指针

c++ - FFmpeg 不关闭输出文件

c++ - vector 迭代编译成非常不同的指令

c++ - 未记录的 GCC 扩展 : VLA in struct