自学内容网 自学内容网

【一句话点破】【C++重要题目】基类与派生类的成员变量值被对象调用的结果(二)

【一句话点破】基类/派生类的成员变量由哪个对象初始化的,哪个对象调用该成员变量时就用由它初始化的值 [尤其找准是基类对象or派生类对象的值]
【重要例题】15浙工大卷二读程序5题
在这里插入图片描述
·可运行代码如下

#include "bits/stdc++.h" 
#include<iostream>
using namespace std;
class Base{
int x0,y0;
public:
Base(int i,int j){ //基类2参构造 
x0=i;
y0=j;
}
void Move0(int x,int y){
x0+=x; y0+=y;
} 
void show0(){ 
cout<<"基类Base的x0为"<<x0<<",y0为"<<y0<<endl; 
}
}; 
class Derived:private Base{
private:
int x,y;
public:
Derived(int i,int j,int m,int n):Base(i,j){ //派生类构造初始参数列表  
x=m; y=n;
} 
void show0(){    
cout<<"派生类Derived的x为"<<x<<",y为"<<y<<endl;
} 
void Move1(){
Move0(2,3);
}
void show1(){
Base::show0();
}
};
 
int main(){ 
    Base b(111,222); //x0=i=111,y0=j=222 
    b.show0(); //输出基类Base的x0为111,y0为222  
    Derived d(666,888,10,15); //x0=i=666,yo=j=888,x=m=10,y=n=15   
    d.Move1(); //【注意】执行基类move0(2,3),基类x0=x0+x=666+2,yo=yo+y=888+3 
    d.show0(); //输出派生类Derived的x为10,y为15  
    d.show1(); //【注意】调用基类show0(),输出类Base的x0,y0  
    
    return 0;
} 

原文地址:https://blog.csdn.net/m0_57050876/article/details/142486627

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!