这里要注意一点,获取基类的area时,一定要加rectangle::,派生类中函数名和基类相同时,基类的函数会被覆盖(shadow),不标明命名空间就会构成递归死循环
#include<bits/stdc++.h>
using namespace std;
class rectangle{
private:
int length,width;
public:
rectangle(int x,int y){
length=x;
width=y;
}
void set(int x,int y){
length=x;
width=y;
}
int getlength(){
return length;
}
int getwidth(){
return width;
}
int area(){
return length*width;
}
};
class cuboid:public rectangle{
private:
int height;
public:
cuboid(int x,int y,int z):rectangle(x,y),height(z){}
int area(){
return (rectangle::area()+height*(getlength()+getwidth()))*2;
}
};
int main(){
int x,y,z;
cin>>x>>y>>z;
cuboid a(x,y,z);
cout<<a.rectangle::area()<<'\n'<<a.area();
return 0;
}

京公网安备 11010502036488号