lwqsbtl 2018-10-31 09:03 采纳率: 42.9%
浏览 720

c++中类的虚函数与引用赋值问题

class Shape{
public:
    virtual int fun()=0;
};
class Rec:public Shape{
    int x,y;
public:
    Rec(int a,int b){
        x=a;
        y=b;
    }
    void Set(int a,int b){
        x=a;
        y=b;
    }
   virtual int fun(){
        return x*y;
    }

};
void main(){
     Rec r1(1,1);
     Rec r2(10,10); 
     Shape &p=r1;
     r1=r2; 
     cout<<p.fun()<<endl; //输出x*y=100

     r1.Set(1,1);
     cout<<p.fun()<<endl;  //输出x*y=1
     p=r2;
     cout<<p.fun()<<endl;  //输出x*y=1,为什么不是输出100?????????
     while(1);
}

可是如果对int型进行引用的话,
int a=1,b=2;
int &p=a;
cout<<a<<p<<endl; //输出1,1
p=b;
cout<<a<<p<<endl; //输出2,2
a=3;
cout<<a<<p<<endl; //输出3,3
无论是改变a还是p他们俩都会一起改变,跟上面的类的引用不一样

  • 写回答

3条回答 默认 最新

  • 随风飘荡012 2018-10-31 09:29
    关注

    r1地址 和p地址是否一样 不一样更改r1并不改变p

    评论

报告相同问题?