实验5 继承与派生
#include<iostream>
#include<string>
using namespace std;
class mammal
{
public:
mammal(string s,int a,float w)
{
sex=s;age=a;weight=w;
cout<<"调用mammal构造函数!"<<endl;
cout<<sex<<" dog"<<endl;
cout<<" 年龄:"<<age<<" 体重:"<<weight<<endl;
}
~mammal(){
cout<<"调用mammal析构函数!"<<endl;
}
private:
string sex;
int age;
float weight;
};
class dog:public mammal
{
public:
dog(string n,mammal m):mammal(m)
{
name=n;
cout<<"调用dog构造函数!"<<endl;
cout<<name<<" dog"<<endl;
}
~dog()
{
cout<<"调用dog析构函数!"<<endl;
}
private:
string name;
};
int main()
{
mammal m("male",5,1);
dog a("Black",m);
return 0;
}
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
#include<iomanip>
#include<algorithm>
using namespace std;
const double PI=3.1415926535;
class Point{
private:
double x,y;
public:
Point(){ x = 0; y = 0; }
Point(double xv,double yv){ x = xv; y = yv; }
Point(Point& pt){ x = pt.x; y = pt.y; }
double getx(){ return x;}
double gety(){ return y;}
double Area(){ return 0;}
void Show(){
cout<<"x="<<x<<" "<<"y="<<y<<endl;
}
};
class Circle:public Point{
double radius;
public:
Circle(){ radius = 0;}
Circle(double xv,double yv,double vv):Point(xv,yv){ radius = vv;}
Circle(Circle& cc):Point(cc){ radius = cc.radius;} //拷贝构造函数
double Area(){return PI*radius*radius;}
void Show(){
cout<<"x="<<getx()<<" "<<"y="<<gety()<<" "<<"radius="<<radius<<endl;
}
int position(Point &pt){
double distance = sqrt((getx()-pt.getx())*(getx()-pt.getx())+(gety()-pt.gety())*(gety()-pt.gety()));
double s=distance-radius;
if(s==0) return 0; //在圆上
else if(s<0) return 2; //在圆内
else return 1; //在圆外
}
};
int main(){
Circle cc1(2,2,2),cc2(1,1,1),cc3(1,2,3);
Point p1(0,0),p2(6,8),p3(3,3),p4(8,4),p5(8,8);
cc1.Show();
cc2.Show();
cout<<"圆cc3:"<<" ";
cc3.Show();
switch(cc3.position(p1)){
case 0:cout<<"在圆上"<<endl;break;
case 2:cout<<"在圆内"<<endl;break;
case 1:cout<<"在圆外"<<endl;break;
}
cout<<"圆cc2:"<<" ";
cc2.Show();
switch(cc2.position(p2))
{
case 0:cout<<"在圆上"<<endl;break;
case 2:cout<<"在圆内"<<endl;break;
case 1:cout<<"在圆外"<<endl;break;
}
cout<<"圆cc1:"<<" ";
cc1.Show();
switch(cc1.position(p3)){
case 0:cout<<"在圆上"<<endl;break;
case 2:cout<<"在圆内"<<endl;break;
case 1:cout<<"在圆外"<<endl;break;
}
return 0;
}