这里要注意一点,获取基类的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; }