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

原创 2018年04月15日 09:48:21

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;
}

Number类

-
  • 1970年01月01日 08:00

总结c++类的构造函数 拷贝构造函数 析构函数 赋值运算符重载的特点以及函数调用顺序

对 c++类成员函数中的构造函数 拷贝构造函数 析构函数 赋值运算符重载的一些特点以及函数调用顺序,并附上例子,希望对大家有帮助,有错误大家可以指出来。...
  • wenqiang1208
  • wenqiang1208
  • 2016-10-18 19:04:40
  • 1418

C++类构造函数,拷贝构造函数,赋值函数,析构函数几点注意

一个空类时,编译器会默认生成构造函数,拷贝构造函数,赋值函数,析构函数一个类如果重写拷贝构造函数,那么必须自定义一个构造函数。如下代码会编译出错:error C2512: “B”: 没有合适的默认构造...
  • xiejianjun417
  • xiejianjun417
  • 2016-07-07 16:27:17
  • 1319

C++中构造函数,拷贝构造函数,析构函数

C++中默认构造函数就是没有形参的构造函数。准确的说法,按照《C++ Primer》中定义:只要定义一个对象时没有提供初始化式,就是用默认构造函数。为所有 的形参提供默认实参的构造函数也定义了默认构造...
  • u012501459
  • u012501459
  • 2015-03-09 21:29:30
  • 1567

写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数

编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:  class String  {    public:     String(const c...
  • lxbwolf
  • lxbwolf
  • 2016-03-07 20:28:08
  • 2364

构造函数,拷贝构造函数,析构函数,运算符重载

一、构造函数 1、概念  构造函数是一种特殊的成员函数。名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的声明周期内只调用一次,以保证每个数据成员都有一个合适的初始值。   2、构造...
  • qq_36345632
  • qq_36345632
  • 2016-10-21 14:25:49
  • 583

编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数

编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为: class String { public: String(const char *str = NULL); // ...
  • chinawangfei
  • chinawangfei
  • 2015-02-01 16:35:47
  • 693

C++构造与析构(5) - 何时必须自定义拷贝构造函数

如果默认拷贝构造函数可以解决问题,则不需要自己写一个构造函数。如果对象没有指针成员,或任何运行时分配的资源(例如文件句柄,网络连接等),则使用默认拷贝构造函数可能就足够。同样,这种情况下,默认构造函数...
  • shltsh
  • shltsh
  • 2015-05-24 10:27:50
  • 809

C++实现 类string的 普通构造函数, 拷贝构造函数 析构函数 和赋值函数

  • 2012年10月04日 15:51
  • 2KB
  • 下载

C++的静态成员函数,成员变量,构造函数,析构函数,拷贝构造函数

在C++中有一些概念我们必须要彻底的理解,不然就会在程序设设计中埋藏一个不定时的”定时炸弹“。下面的一些文字都是本人在自学时的一些经验总结,虽然代码没有(后面我会补上相应的代码),但是读一读相信你也会...
  • u010165367
  • u010165367
  • 2016-04-24 13:46:08
  • 599
收藏助手
不良信息举报
您举报文章:C++习题——椭圆类(拷贝构造函数和析构函数)
举报原因:
原因补充:

(最多只允许输入30个字)