• 椭圆类——2(拷贝构造函数和析构函数)


    【问题描述】
    (1)拷贝(复制)构造函数的实现。
    在已经完成的“椭圆类——1”的基础上,增加一个拷贝构造函数。
    函数原型格式:Ellipse(const Ellipse & e);
    (2)增加Show()函数,显示椭圆的外切矩形的顶点坐标。
    (3)增加一个成员函数Fun(int y),将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y。
    (4)增加析构函数,在析构函数中输出“xigou”以及待析构对象的外切矩形左上角的横纵坐标。

    【输入形式】
    在主函数中输入顶点坐标后创建一个对象,并用该对象作为初始值再创建一个新对象。
    输入一个值,用于修改新对象的外切矩形的纵坐标。

    【输出形式】
    在主函数里调用这2个对象的Show函数分别输出外切矩形的顶点坐标,
    调用Area函数分别计算并输出椭圆的面积。
    接收修改值y后,调用Fun函数修改新对象的纵坐标。重新计算新对象的面积并输出。

    【样例输入】
    -3 1 3 -1
    1

    【样例输出】
    -3 1 3 -1
    -3 1 3 -1
    9.4245
    9.4245
    18.849
    xigou -3 2
    xigou -3 1

    #include <iostream>
    #include <math.h>
    #include <iomanip>
    using namespace std;
    
    class Ellipse
    {
    private:
        int x1,y1,x2,y2;
    public:
        //基础函数
        Ellipse(int xx1,int yy1,int xx2,int yy2);//构造函数
        Ellipse(const Ellipse & e);//拷贝构造函数
        ~Ellipse();//析构函数
        //功能函数
        double Area();//计算椭圆面积
        int GetX1(){return x1;}
        int GetY1(){return y1;}
        int GetX2(){return x2;}
        int GetY2(){return y2;}
        void Show();//显示椭圆的外切矩形的顶点坐标
        void Fun(int y);//将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y
    };
    
    Ellipse::Ellipse(int xx1,int yy1,int xx2,int yy2)
    {
        x1 = xx1; y1 = yy1; x2 = xx2; y2 = yy2;
    }
    
    Ellipse::Ellipse(const Ellipse & e)//拷贝构造函数
    {
        x1 = e.x1; y1 = e.y1; x2 = e.x2; y2 = e.y2;
    }
    
    Ellipse::~Ellipse()//析构函数
    {
        cout << "xigou " << x1 << " " << y1 << endl;
    }
    
    double Ellipse::Area()
    {
        return (double)( 3.1415 * fabs(x2-x1) * fabs(y2-y1) / 4 );
    }
    
    void Ellipse::Show()//显示椭圆的外切矩形的顶点坐标
    {
        cout << x1 << " " << y1 << " " << x2 << " " << y2 << endl;
    }
    
    void Ellipse::Fun(int y)//将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y
    {
        y1 += y; y2 -= y;
    }
    
    int main()
    {
        int x1,y1,x2,y2,y;
        cin >> x1 >> y1 >> x2 >> y2 >> y;
        Ellipse e1(x1,y1,x2,y2);
        Ellipse e2(e1);//调用拷贝构造函数
        e1.Show();
        e2.Show();
        cout << fixed << setprecision(4) << e1.Area() << endl;
        cout << fixed << setprecision(4) << e2.Area() << endl;
        e2.Fun(y);
        cout << fixed << setprecision(3) << e2.Area() << endl;
        return 0;
    }
    
  • 相关阅读:
    jvm003-运行时数据区及程序计数器
    jvm002-类加载子系统
    jvm001-JVM与Java体系结构
    (四十三)常用 10 种算法——马踏棋盘算法
    (四十二)常用 10 种算法——弗洛伊德算法
    node 环境配置
    cordova platform add android报错问题处理
    WPF代码引用Resouces中的图片
    WPF中利用WebClient向服务器上传文件
    未能加载文件或程序集“COM.Excel”或它的某一个依赖项
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626153.html
Copyright © 2020-2023  润新知