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

    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法