C++ 面向对象实验(三)

实验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; 
 }  


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值