简单派生类对基类的调用编写

问题设计一个名为GeometricObject的类,用来建模所有的几何对象。GeometricObject类包含:
string类型的属性color,用来表示几何对象的颜色(默认值:white)。
Bool类型的属性filled,用来表示几何对象是否填充颜色(默认值:false)
一个无参的构造函数,它创建一个缺省的几何对象(颜色为white,未填充颜色)。
一个带参数的构造函数,它创建一个指定color和filled值的几何对象。
数据成员color的访问器函数getColor()和更改器函数setColor()。
数据成员filled的访问器函数isFilled()和更改器函数setFilled()。
一个名为toString()的常量函数,返回几何对象的字符串描述,如“Geometric Object”。
设计一个名为Triangle的类,作为GeometricObject的派生类,Triangle类包含:
三个名为 side1、side2、side3的double型数据成员,表示三角形的三条边长。
一个无参的构造函数,它创建一个缺省的三角形(边长为1.0)。
一个带参数的构造函数,它创建一个指定side1、side2和side3值的三角形。
可以访问所有三个数据成员的访问器函数。
一个名为 getArea()的常量函数,返回三角形的面积。
一个名为getPerimeter()的常量函数,返回三角形的周长。
一个名为toString()的常量函数,返回三角形对象的字符串描述,如“Triangle Object”。
实现该类。编写一个测试程序,提示用户输入三角形的三条边,输入一种颜色,并且输入1或0来指示是否该三角形被填充。程序应使用用户的输入来创建具有三条边和颜色设置及填充属性的Triangle对象。程序应输出面积、周长、颜色以及是否被填充。

 #include <iostream>
  #include <math.h>
  #include <string>
  using namespace std;
  class geoment{
  	private:
  	string color;
  	bool filled;
  	public:
  	 geoment(){color="white";filled=false;}
	 geoment(string x,bool y)
	 {
	 	color=x;
	 	filled=y;
	 }
	 void setcolor(string x){color=x;}
     string getcolor(){return color;} 
	 void setfilled(bool y){filled=y;}
	 bool getfilled(){return filled;} 
	 const void tostring(){cout<<"属性:"<<"Geometric Object"<<endl;} 
  };
  class Triangle:public geoment{
  	private:
  		double side1,side2,side3;
  	public:
  		Triangle(){side1=1;side2=1;side3=1;}
		Triangle(string color,bool filled,double x1,double x2 ,double x3):geoment(color,filled),side1(x1),side2(x2),side3(x3){}; 
  	    void get1(double x1){ side1=x1;}                                 //上面就是在派生类构造函数中对基类的成员的初始化的方式,注意一下!!! 
	    void get2(double x2){ side2=x2;}
		void get3(double x3){ side3=x3;} 
		const double getarea()
		{
	        double z;
			z=(side1+side2+side3)/2;
			return sqrt(z*(z-side1)*(z-side2)*(z-side3)); 
		}
		const double getperimenter()
		{
			 return side1+side2+side3;
		}
		const void tostring()
		{
		  geoment::tostring();
		  cout<<"属性:"<<"Triangle object"<<endl; 
		} 
  };  
    int main()
    {
    	Triangle t;
    	int x1,x2,x3;
    	string colors;
    	bool filleds;
    	cin>>x1>>x2>>x3>>colors>>filleds;
    	t.get1(x1);
    	t.get2(x2);
    	t.get3(x3);
    	t.setcolor(colors);
        t.setfilled(filleds); 
        t.geoment::tostring();//这里用派生类调用基类的成员函数的方式,注意一就可以了; 
        cout<<"面积:"<<t.getarea()<<","<<"周长:"<<t.getperimenter()<<","<<endl;
        t.tostring();
		if(filleds) cout<<"填充完毕"<<endl;
		else cout<<"未填充"<<endl;
		return 0; 
	}

注意事项:
1这里是简单的派生类的应用,注意,这里是公有派生,注意在派生类里面的构造函数对基类的初始化的形式,采用参数列表的形式来写,
2,要注意的是在主函数怎样用派生类的对象调用的基类的函数,以上代码写明了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值