zoukankan      html  css  js  c++  java
  • 实验3

                                                                                                          南京信息工程大学实验报告

    实验名称:类和对象   实验日期:2018-4-3   得分:          指导老师:耿学华    系:计软院    专业:计嵌     年级:2017级     班次:(1)   姓名:赵业康    学号:20178303035

    实验结论

    1.验证性实验

    (1)类:在面向对象程序设计中,类构成程序模块。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述,描述了一类事物的共同属性和行为。

    (2)对象:类的对象是该类的某一特定实体,也就是实例化的类。

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

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

    (5)析构函数:析构函数用来完成对象被删除前的一些清理工作,析构函数是在对象的生存期即将结束的时刻被自动调用的,析构函数不接收任何参数。

    2.编程实验部分

    (1)习题4-11

    源代码:

    #include<iostream>
    using namespace std;
    class Rectangle {
    public:
        Rectangle(float l, float w);//自定义构造函数
        Rectangle(Rectangle &t);    //复制构造函数
        ~Rectangle();               //析构函数
        float area();               //area函数计算矩形面积
    private:
        float length, width;
    };
    Rectangle::Rectangle(float l, float w) {  //构造函数的实现
        length = l;
        width = w;
    }
    Rectangle::Rectangle(Rectangle &t) {      //复制构造函数的实现
        width = t.width;
        length = t.length;
    }
    float Rectangle::area() {                 //area函数的实现
        return length * width;
    }
    Rectangle::~Rectangle() {                 //析构函数的实现
        cout << "destuctor is called." << endl;
    }
    int main(){
        float length,width;
        cout << "请输入巨形的长和宽:";
        cin >> length >> width;
        Rectangle rec1(length, width);
        Rectangle rec2(rec1);
        float s = rec2.area();
        cout << "矩形的面积为:" << s << endl;
        return 0;
    }

    运行结果:

    (2)习题4-20

    源代码:

    #include<iostream>
    using namespace std;
    class Complex {
    public:
        Complex(double r0, double i0);//自定义构造函数(复数)
        Complex(double r0);           //函数重载(实数)
        Complex(Complex &c0);         //复制构造函数
        void add(Complex &c0);        //类成员函数
        void show();
    private:
        double real, imaginary;
    };
    Complex::Complex(double r0, double i0) {//构造函数的实现
        real = r0;
        imaginary = i0;
    }
    Complex::Complex(double r0) {           //重载函数的实现
        real = r0;
    }
    Complex::Complex(Complex &c0) {         //复制构造函数的实现
        real = c0.real;
    }
    void Complex::add(Complex &c0) {        //add函数的实现
        real = real + c0.real;              //c1与c2相加,结果保存在c1中
    }
    void Complex::show() {
        cout << real << "+" << imaginary << "i" << endl;//show函数的实现
    }
    int main() {
        double r0, i0, r1;
        cout << "请输入复数的实部和虚部:";
        cin >> r0 >> i0;
        cout << "请输入复数的实部和虚部:";
        cin >> r1;
        Complex c1(r0, i0);
        Complex c2(r1);
        Complex c0(c2);
        c1.add(c0);
        c1.show();
    }

    运行结果:

    实验总结与体会:

            这次实验让我收获颇丰,通过实验,我加深了对类、对象、构造函数、复制构造函数和析构函数的认识和了解,但我知道自己远没有熟练掌握这些知识。看例题似乎挺简单,然而自己动手做的时候就感觉压力很大,这次虽然完成了两道实验题,但大部分内容都是仿照这书本上和课件上的例题对照着模仿出来的,即便如此仍然意外频出。尤其是第二个实验题,若非有UML图提示,我只怕要再花上多一倍的时间才能完成,不过这也让我认识了UML图的实用之处。看来为了掌握这些知识,日后还要多加练习,方能积累经验。

  • 相关阅读:
    译文高效的JavaScript.
    JavaScript 全半角转换
    js表单验证
    Js事件大全
    Javascript下的urlencode编码解码方法decodeURIComponent()
    加速Javascript:DOM操作优化
    javascript验证日期的函数
    javascript里面的小数计算出现近似值的解决办法
    【busybox】busybox使用总结 01
    Assemble 汇编语言的种类
  • 原文地址:https://www.cnblogs.com/hero-1/p/8727458.html
Copyright © 2011-2022 走看看