1、3在主函数中定义类的对象c1并初始化r=2。再调用getarea()函数输出面积*/#include using namespace std;class point/定义point类public:point() point(int x, int y)void set_x(int x)this-x = x;int get_x() return x;void set_y(int y)y = y;int get_y()return y;private:/私有对象x yint x;int y;class circle :public point/circle类公有派生pointcircle() cir
2、cle(double r,int x,int y):point(x,y)r = r;double get_r() return r;double getarea() return(3.14*r*r);int r;/circle私有对象rint main()circle c1(2,3,6);coutr=c1.get_r()endl;cout 该圆面积=c1.getarea() ,功能。在main函数里测试该类。1.定义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)2.重载自加自减运算符和运算符。3.在主函数中实现运算符重载。4.友元函数需要声明。#include
3、class counter;istream& operator(istream& is,counter& a);ostream& operatorfriend ostream& /同上counter counter:operator +() /前置+重载实现+P;return *this;operator +(int) /后置+重载实现counter a=*this;+(*this);return a;operator -() /前置-重载实现-P;operator -(int) /后置-重载实现-(*this); in,counter& a) /运算符重载实现ina.P;if(!in)cer
4、r输入错误!return in; out,counter& a) /运算符outreturn out;counter c1(236),c2(632); c1=c1endlc2=c2+c1=+c1 /测试c1+=c1+c2-=c2-c2=-c2定义c1的值为236,c2的值为632;此时+c1的数值为237;c1+输出时为237,输出后为238;此时c2-输出时为632;-c2输出时为630,输出后为630;3 虚函数和抽象类定义一个抽象类shape,包括公有的计算面积area函数,计算体积volume函数,输出基本信息函数printinfo(三个函数均为纯虚函数)。从shape公有派生poin
5、t类,增加私有数据成员x,y坐标,以及构造函数,析构函数。从point公有派生circle类,增加私有数据成员半径r,以及构造函数,析构函数。从circle公有派生cylinder类,增加私有数据成员高度h,以及构造函数,析构函数。(在定义三个派生类的过程中,自己考虑需要重定义哪个虚函数)。在main函数中,定义shape类的指针,指向派生类的对象,输出三类对象的基本信息,面积,体积;(将shape指针改为引用再尝试)。1先定义基类shape。设置三个纯虚函数并且声明:声明计算面积纯虚函数area();声明计算体积纯虚函数volume();声明输出基本信息纯虚函数printinfo();2定义
6、类point共有继承自类shape。并且在该类中实现三个纯虚函数。3定义类circle共有继承自类point。4定义类cylinder共有继承自类circle。5在主函数中分别创建类point的对象a,circle的对象b,cylinder的对象c,并初始化;6在主函数中分别定义shape类的指针和引用,调用printinfo()函数。#define Pi 3.141516class shapevirtual double area() = 0;/三个纯虚函数:面积,体积,基本输出virtual double volume() = 0;virtual void printinfo () = 0
7、;class point :public shape/shape派生的point类;点并没有体积面积,所以只写printinfo函数point(double x, double y)void printinfo()cout x= x ,y= y point() double x;double y;public point/同理;circle类(圆)需重写两个虚函数;circle(double r,double x,double y):double area()return Pi*r*r;point:printinfo();半径为 r 圆的面积是 area() circle() double r;class cylinder :public circle/圆柱,同理,不多说cylinder() cylinder(double h, double x,double y, double r) :circle(x, y,r)h
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1