2

私が知っているように、参照はその存続期間中に 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;
}
4

3 に答える 3

1

参照は、その存続期間全体で 1 つの参照対象のみを参照します。
コードが行うことは、新しい値を元の参照語に割り当てることです。

于 2013-01-31T16:04:44.127 に答える
0

あなたの主な機能はこれと同等です:

B b(1,2);
A a(5);
a = b;
a.f();

参照への割り当ては、元のオブジェクトへの割り当てと同じです。

于 2013-01-31T16:04:51.117 に答える