#include <iostream>
using namespace std;
//一个计算几何体周长体积的程序
class Circle{
public://我差点没写?私有构造函数海星
Circle(double radiu){
radius=radiu;
}
virtual double area(){
return 3.14*radius*radius;
};
virtual double volume(){
return 0;
};
protected://这里声明为protected,如果是private,重载的虚函数不能使用这些数据成员
double radius;
};
class Sphere:public Circle{//这里一定要声明public,否则默认private,基类指针访问不了子类的继承的数据成员
public:
Sphere(double radius):Circle(radius){
}
double volume(){
return 100+4/3.0*3.14*radius*radius*radius;
}
double area(){
return 200+4*3.14*radius*radius;
}
};
class Column:public Circle{
public:
Column(double radius, double heigh):Circle(radius),height(heigh){
}
double volume(){
return 300+3.14*radius*radius*height;
}
double area(){
return 400+3.14*radius*radius*2+2*3.14*radius*height;
}
private:
double height;
};
int main(){
Sphere ball(1);
cout<<ball.area()<<endl<<ball.volume()<<endl;
Column col(1,1);
cout<<col.area()<<endl<<col.volume()<<endl;
Circle* ptr;//多态通过基类指针的移动实现
ptr=&ball;
cout<<ptr->area()<<endl<<ptr->volume()<<endl;
ptr=&col;
cout<<ptr->area()<<endl<<ptr->volume()<<endl;
return 0;
}
#include <iostream>
using namespace std;
class teacher{
public:
teacher(double pe){
peroids=pe;
}
virtual int total(){
return 0;
}
protected:
int peroids;
};
class pro:public teacher{
public:
pro(double pe):teacher(pe){
}
int total(){
return 5000+50*peroids;
}
};
class proAssistant:public teacher{
public:
proAssistant(double pe):teacher(pe){
}
int total(){
return 3000+30*peroids;
}
};
class lecture:public teacher{
public:
lecture(double pe):teacher(pe){}
int total(){
return 2000+20*peroids;
}
};
int main(){
teacher* ptr;
pro a(10);
proAssistant b(10);
lecture c(10);
ptr=&a;
cout<<ptr->total()<<endl;
ptr=&b;
cout<<ptr->total()<<endl;
ptr=&c;
cout<<ptr->total()<<endl;
return 0;
}