2 回答

TA貢獻1821條經驗 獲得超5個贊
#include <iostream>
#define PI 3.14
using namespace std;
class container
{
public:
container(int radius=0){
this->radius = radius;/*賦值給類的成員變量*/
}
virtual void Square()=0;
virtual void Volume()=0;
int GetRadius(){return radius;} /*給私有成員變量提供一個訪問的函數*/
/*要想修改就提供一個void SetRadius(int radius)的函數*/
private:
int radius;
};
class cube:public container
{
public:
cube(int radius1):container(radius1){}
virtual void Square()
{
/*基類的私有成員在這里無法之間反問,可通過基類的成員函數訪問,下面凡事訪問radius都通過
GetRadius()來訪問*/
square1=4*PI*GetRadius()*GetRadius();
cout<<"the cube's square is:"<<square1<<endl;
}
virtual void Volume()
{
volume1=(4.0/3)*PI*GetRadius()*GetRadius()*GetRadius();/*4/3等于1了,要寫成4.0/3才對 */
cout<<"the cube's volume is:"<<volume1<<endl; /*這里應該是volume1*/
}
private:
double square1,volume1;
};
class sphere:public container
{
public:
sphere(int radius1):container(radius1){}
virtual void Square()
{
square2=6*GetRadius()*GetRadius();
cout<<"the sphere's square is:"<<square2<<endl;
}
virtual void Volume()
{
volume2=GetRadius()*GetRadius()*GetRadius();
cout<<"the sphere's volume is:"<<volume2<<endl;
}
private:
double square2,volume2;
};
class cylinder:public container
{
public:
cylinder(int radius1):container(radius1){}
virtual void Square()
{
cout<<"please input the cylinder's height=";
cin>>height;
square3=2*PI*GetRadius()*GetRadius()+2*PI*GetRadius()*height;
cout<<"the cylinder's square is:"<<square3<<endl;
}
virtual void Volume()
{
volume3=PI*GetRadius()*GetRadius()*height;
cout<<"the cylinder's volume is:"<<volume3<<endl;
}
private:
double square3,volume3;
int height;
};
int main()
{
//container container1;
int a;
cout<<"Please input a radius=";
cin>>a;
cube cube1(a);
sphere sphere1(a);
cylinder cylinder1(a);
cube1.Volume();
cube1.Square();
sphere1.Volume();
sphere1.Square();
cylinder1.Square();
cylinder1.Volume();
return 0;
}

TA貢獻1848條經驗 獲得超6個贊
#include <iostream>
#define PI 3.14
using namespace std;
class container
{
public:
container(int radius=0){}
virtual void Square()=0;
virtual void Volume()=0;
//private: //因為這個是私有的,不能被繼承類訪問,為了簡單,我將它改成了public
int radius;
};
class cube:public container
{
public:
cube(int radius1):container(radius1){} //這里int必須去掉
virtual void Square()
{
square1=4*PI*radius*radius; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the cube's square is:"<<square1<<endl;
}
virtual void Volume()
{
volume1=4/3*PI*radius*radius*radius; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the cube's volume is:"<<square1<<endl;
}
private:
double square1,volume1;
};
class sphere:public container
{
public:
sphere(int radius1):container(radius1){} //這里int必須去掉
virtual void Square()
{
square2=6*radius*radius; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the sphere's square is:"<<square2<<endl;
}
virtual void Volume()
{
volume2=radius*radius*radius; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the sphere's volume is:"<<volume2<<endl;
}
private:
double square2,volume2;
};
class cylinder:public container
{
public:
cylinder(int radius1):container(radius1){} //這里int必須去掉
virtual void Square()
{
cout<<"please input the cylinder's height=";
cin>>height;
square3=2*PI*radius*radius+2*PI*radius*height; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the cylinder's square is:"<<square3<<endl;
}
virtual void Volume()
{
volume3=PI*radius*radius*height; //////////////////基類的成員是radius,沒有1,你寫成了radius1
cout<<"the cylinder's volume is:"<<volume3<<endl;
}
private:
double square3,volume3;
int height;
};
int main()
{
//container container1;
int a;
cout<<"Please input a radius=";
cin>>a;
cube cube1(a);
sphere sphere1(a);
cylinder cylinder1(a);
cube1.Volume();
cube1.Square();
sphere1.Volume();
sphere1.Square();
cylinder1.Square();
cylinder1.Volume();
return 0;
}
- 2 回答
- 0 關注
- 859 瀏覽
添加回答
舉報