

想問一下各位如何在main函式里面呼叫類里面的函式,我這個不知道為什么出錯
#include <iostream>
using namespace std;
const double PI=3.14159;
class Figure {
public:
virtual double area()=0;
virtual double volume()=0;
};
class Circle : public Figure {
public:
Circle(double r):radius(r) {}
double getR() {
cout<<"請輸入半徑"<<endl;
cin>>radius;
return radius;
}
double setR() {
return radius;
}
private:
double radius; //R
};
class Sphere : public Circle { //球類
public:
Sphere(double x):Circle(x) {}
virtual double volume() {
double a=setR();
return 4/3*PI*a*a*a;
}
virtual double area() {
double a=setR();
return 4*PI*a*a;
}
};
class Cylinder : public Circle { //圓柱體類
public:
Cylinder (double a,double b ):Circle(a),height(b) {}
virtual double volume() {
double a=setR();
return a*a*PI*height;
}
virtual double area() {
double a=setR();
return a*a*PI*2+2*PI*a*height;
}
private:
double height; //H
};
int main() {
Circle.Circle.getR();
Sphere sp(Circle.setR());
Cylineder cy(Circle.setR(),3.0);
cout<<"圓的表面積為:"<<sp.area()<<endl;
cout<<"圓的體積為:"<<sp.volume()<<endl;
cout<<"圓柱體的表面積為:"<<cy.area()<<endl;
cout<<"圓柱體的體積為:"<<cy.volume()<<endl;
return 0;
}
uj5u.com熱心網友回復:
Circle Cir;Cir.getR
uj5u.com熱心網友回復:
這么弄還是不行呀uj5u.com熱心網友回復:
Circle circle;circle.getR();
Sphere sp(circle.setR());
Cylineder cy(circle.setR(),3.0);
cout<<"圓的表面積為:"<<sp.area()<<endl;
cout<<"圓的體積為:"<<sp.volume()<<endl;
cout<<"圓柱體的表面積為:"<<cy.area()<<endl;
cout<<"圓柱體的體積為:"<<cy.volume()<<endl;
uj5u.com熱心網友回復:
你這也沒體現多型呀Circle circle;
circle.getR();
Sphere sp(circle.setR());
Cylineder cy(circle.setR(),3.0);
Circle* c1 = &sp;
Circle* c2 = &cy;
cout<<"圓的表面積為:"<<c1->area()<<endl;
cout<<"圓的體積為:"<<c1->volume()<<endl;
cout<<"圓柱體的表面積為:"<<c2->area()<<endl;
cout<<"圓柱體的體積為:"<<c2->volume()<<endl;
uj5u.com熱心網友回復:
你估計不是很明白什么是類,什么是物件,什么是實體化轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42737.html
標籤:C++ 語言
上一篇:錯誤就在//后面,型別總共只有4種,就是不曉得怎么改,求求各位大神救救孩子
下一篇:答案為什么不是*ta
