C++习题——椭圆类(拷贝构造函数和析构函数)

Description

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

Input

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

Output

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

Sample Input

 
-3 1 3 -1

1

Sample Output

-3 1 3 -1
-3 1 3 -1

9.4245

9.4245

18.849

xigou -3 2

xigou -3 1
#include <iostream>
#include <cmath>
using namespace std;
class Ellipse{
public:
    Ellipse(int a,int b,int c,int d)
    {
        x1=a;
        y1=b;
        x2=c;
        y2=d;
    }
    Ellipse(const Ellipse & e);
    double Area()
    {
        double x;
        x=3.1415*(x2-x1)*(y2-y1)/4;
        if(x>=0)
            return x;
        if(x<0)
            return -x;
    }
    int visitx1(){return x1;}
    int visity1(){return y1;}
    int visitx2(){return x2;}
    int visity2(){return y2;}
    void Show(){cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;}
    void Fun(int y)
    {
        y1=y1+y;
        y2=y2-y;
    }
    ~Ellipse(){cout<<"xigou "<<x1<<" "<<y1<<endl;}
private:
    int x1,y1,x2,y2;
};
Ellipse::Ellipse(const Ellipse & e){
    x1=e.x1;
    y1=e.y1;
    x2=e.x2;
    y2=e.y2;
}
int main()
{
    int x1,y1,x2,y2,y;
    cin>>x1>>y1>>x2>>y2;
    cin>>y;
    Ellipse a(x1,y1,x2,y2);
    Ellipse b=a;
    a.Show();
    b.Show();
    cout<<a.Area()<<endl;
    cout<<b.Area()<<endl;
    b.Fun(y);
    cout<<b.Area()<<endl;
    return 0;
}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在C++中,我们可以通过编写构造函数拷贝构造函数函数来管理自定义结体对象的创建、复制和销毁。下面是一些示例代码,展示了如何编写这些函数: ```c++ // 定义一个自定义结体 struct Person { std::string name; int age; std::string address; // 构造函数 Person(std::string n, int a, std::string ad) : name(n), age(a), address(ad) {} // 拷贝构造函数 Person(const Person& p) : name(p.name), age(p.age), address(p.address) {} // 函数 ~Person() {} }; ``` 在上面的代码中,我们定义了一个名为Person的结体,其中包含三个成员变量:name、age和address。接下来我们分别介绍如何编写构造函数拷贝构造函数函数: 1. 构造函数 构造函数用于创建对象时初始化成员变量。在上面的代码中,我们定义了一个构造函数,它接受三个参数:n、a和ad,分别代表name、age和address的初始值。构造函数使用冒号语法来初始化成员变量,这样可以提高代码的效率。例如,语句name(n)将参数n的值赋给name成员变量。 2. 拷贝构造函数 拷贝构造函数用于在创建新对象时,将已有对象的值复制到新对象中。在上面的代码中,我们定义了一个拷贝构造函数,它接受一个常量引用p,表示要复制的对象。拷贝构造函数使用冒号语法来初始化成员变量,这样可以确保新对象的值与原对象相同。 3. 函数 函数用于销毁对象时清理资源,例如释放动态分配的内存。在上面的代码中,我们定义了一个函数,它没有任何参数,也没有任何操作。这是因为Person结体中没有动态分配的内存,所以函数不需要做任何事情。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值