• c++实验3


    1. 验证性实验部分

    (1)类:在面向对象程序设计中,类构成程序模块。类是一个模板,它描述一类对象的行为和状态。

    (2)对象:对象是类的一个实例

    (3)构造函数:构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,且构造函数在对象被创建时将被自动调用。

    (4)复制构造函数:是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用。其作用是使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。

    (5)  析构函数:析构函数用来完成对象被删除前的一些清理工作,提供一个在对象删除前可以释放这个对象所占有的资源的机会。

    可以用以下图片说明类与对象之间的关系:

    图中男孩女孩为类,而具体的每个人为该类的对象。

    析构函数在目前我们的编程练习中,可能没有什么作用。但根据网上资料,在之后的学习,例如指针中,析构函数清理就是帮助回收有依赖关系的内存空间。

    2. 编程实验部分

    4-11

    #include<iostream>
    using namespace std;
    class Rectangle
    {
    public:
        Rectangle(double l, double w);                    //自定义构造函数
        Rectangle(Rectangle &r);                        //复制构造函数
        ~Rectangle();                                    //析构函数
        double Area();                                    //计算矩形面积的函数
    private:
        double length, width;
    };
    Rectangle::Rectangle(double l, double w)            //构造函数的实现
    {
        length = l;
        width = w;
    }
    Rectangle::Rectangle(Rectangle &r)                    //复制构造函数实现
    {
        length = r.length;
        width = r.width;
    }
    Rectangle::~Rectangle()                                //析构函数实现
    {
        cout << "数据已清除" << endl;
    }
    double Rectangle::Area()                            //计算矩形面积的函数的实现
    {
        return length*width;
    }
    int main()
    {
        double length,width;
        cout << "请输入矩形的长、宽: ";
        cin >> length >> width;
        Rectangle R1(length, width);
        Rectangle R2(R1);
        cout<<"面积为:"<<R2.Area()<<endl;
        return 0;
    }

    4-20

    #include <iostream>
    using namespace std;
    class complex {
    public:
        complex(double r, double i);                        //自定义构造函数
        complex(double r);                                    //重载
        complex(complex &t);                                //复制构造函数
        void add(complex c2);                                //加法函数
        void show();
    private:
        double real, imaginary;
    };
    complex::complex(double r, double i)                    //构造函数实现
    {
        real = r;
        imaginary = i;
    }
    complex::complex(double r)                                //重载
    {
        real = r;
        imaginary = 0;
    }
    complex::complex(complex &t)                            
    {
        real = t.real;
        imaginary = t.imaginary;
    }
    void complex::add(complex c2)                            //加法函数实现
    {
        real += c2.real;
        imaginary += c2.imaginary;
    }
    void complex::show()                                    //输出函数实现
    {
        cout<< real << "+" << imaginary << "i" << endl;
    }
    int main()
    {
        complex c1(3.0, 5.0);                                //数据的输入
        complex c2(4.5);
        c1.add(c2);
        c1.show();
        return 0;
    }

    3.实验总结与体会

      通过实验,我加深了对类、对象、构造函数、复制构造函数和析构函数的认识和了解。在上课时有些不理解的地方,通过5 个cpp文件及其中的注释,并且通过比较其运行时的区别可以直观的了解构造函数、复制构造函数和析构函数的作用。

      在实验二中,在纠结是要写一个类似“用户输入实部虚部”的简单界面,还是直接定义。最后还是选择了如上的方法。虽然答案是正确的,但总感觉有些问题。并且好像写了一个复制构造函数却没有在main函数中用到。

  • 相关阅读:
    关于longPressGesture做一个长按连加的效果(原创)
    借助TZImagePickerController三方库理解自定义相册
    关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解
    开发小总结
    iOS开发之emoji处理
    C的枚举(转)
    C语言输出格式总结(转)
    Xcode的使用技巧
    Mac的快捷键(工欲善其事必先利其器)
    我是一只萌新
  • 原文地址:https://www.cnblogs.com/zhibifenli/p/8746263.html
Copyright © 2020-2023  润新知