编写程序:1.定义一个Point类来处理三维点points(x,y,z).该类有一默认的constructor,一copyconstructor, 一negate()成员函数将point的x,y和z值各乘-1, 一norm()成员函数返回该点到原点(0,0,0)的距离,一个print()成员函数显示x,y,和z的值。
#include<iostream>#include<cmath>using namespace std;class Point{private:double x,y,z;double distance;public:Point(double newX,double newY,double newZ){x=newX;y=newY;z=newZ;distance=sqrt(x*x+y*y+z*z);}Point(Point &p){x=p.x;y=p.y;z=p.z;distance=p.distance;}void negate(){x*=-1;y*=-1;z*=-1;}double norm(){return distance;}void print(){cout<<"x="<<x<<endl<<"y="<<y<<endl<<"z="<<z<<endl;}};void main(){Point dot(5,6,9);cout<<"the distance is: "<<dot.norm()<<endl;Point dot1(dot);cout<<"the distance is: "<<dot1.norm()<<endl;return;}2.定义一个Person类,它的每个对象表示一个人。
数据成员必须包含姓名、出生年份、死亡年份,一个默认的构造函数,一析构函数,读取数据的成员函数,一个print()成员函数显示所有数据。
#include<iostream>using namespace std;class Bdate{private:int year;int month;int day;public:Bdate(){}~Bdate(){cout<<"Destructor is called"<<endl;}void Bprint(){cout<<"Birthday="<<year<<"/"<<month<<"/"<<day<<endl;}void Binput(){cin>>year>>month>>day;}};//definition class Bdate;class Ddate{private:int year;int month;int day;public:Ddate(){}~Ddate(){cout<<"Destructor is called"<<endl;}void Dprint(){cout<<"Dead="<<year<<"/"<<month<<"/"<<day<<endl;}void Dinput(){cin>>year>>month>>day;}};//definition class Ddate;class Person{private:char name[10];Bdate birthday;Ddate dead;public:Person(){}~Person(){cout<<"Destructor is called"<<endl;}void print(){cout<<"name="<<name<<endl;birthday.Bprint();dead.Dprint();}void input(){cin>>name;birthday.Binput();dead.Dinput();}};void main(){Person per;per.input();per.print();return;}3。
定义一个Shape基类,由它派生出Rectanglr和Circle类,二者都有GetArea( )函数计算对象的面积。
使用Rectangle 类创建一个派生类Square。
class Shape{protected:public:double GetArea(){return 0;}};class Rectangle : public Shape{protected:double length;double width;public:Rectangle(){}Rectangle(double l, double w){length = l;width = w;}double GetArea(){return length * width;}};class Circle : public Shape{protected:double radius;public:Circle(double r){radius = r;}double GetArea(){return 3.1415926 * radius * radius;}};class Square : public Rectangle{protected:public:Square(double l) {length = width = l;}double GetArea(){return length * width;}};4. 定义一个Shape抽象类,由它派生出Rectanglr和Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( ) 函数计算对象的周长。
#include<iostream>#define PI 3.1415926;using namespace std;class Shape //抽象类的定义{public:virtual double GetArea() = 0; //纯虚函数virtual double GetPerim() = 0; //纯虚函数};class Rectangle : public Shape //矩形类,公有继承{public: Rectangle(double aa, double bb) //带参数的构造函数{a=aa;b=bb;cout<<"长"<<a<<"宽"<<b<<endl;}virtual double GetArea(){return a * b;}virtual double GetPerim(){return 2*( a + b );}private:double a;double b;};class Circle : public Shape //圆类,公有继承{public: Circle(double rr) //带参数的构造函数{r=rr;cout<<"半径"<<r<<endl;}virtual double GetArea(){return r * r * PI;}virtual double GetPerim(){return 2 * r * PI;}private:double r;};void main(){double length, width;cout << "输入长和宽: ";cin >> length >> width;Rectangle rect(length, width);cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<<rect.GetPerim()<<endl;double rr;cout << "输入半径: ";cin >> rr;Circle cir(rr);cout << "面积是:"<<cir.GetArea() << endl<<"周长是:"<<cir.GetPerim()<<endl; }。