zoukankan      html  css  js  c++  java
  • 编程作业: 编程作业—类和对象

    3w6:第三周程序填空题1

    描述

    下面程序输出的结果是:

    4,6

    请填空:

    #include <iostream>
    using namespace std;
    class A {
            int val;
        public:
            A(int n) { val = n; }
            int GetVal() { return val; }
    };
    class B: public A {
        private:
            int val;
        public:
            B(int n):
    // 在此处补充你的代码
            { }
            int GetVal() { return val; }
    };
    int main() {
        B b1(2);
        cout << b1.GetVal() << "," << b1.A::GetVal() << endl;
        return 0;
    }

    输入无输出4,6样例输入

    样例输出

    4,6

    Code:

    #include <iostream>
    using namespace std;
    class A {
            int val;
        public:
            A(int n) { val = n; }
            int GetVal() { return val; }
    };
    class B: public A {
        private:
            int val;
        public:
            B(int n):
    // 在此处补充你的代码
            A(n*3), val(n*2) {}
            int GetVal() { return val; }
    };
    int main() {
        B b1(2);
        cout << b1.GetVal() << "," << b1.A::GetVal() << endl;
        return 0;
    }
    

      

    3w7:第三周程序填空题2

    描述

    下面程序输出的结果是:

    0

    5

    请填空:

    #include <iostream>
    using namespace std;
    class A {
    public:
        int val;
    // 在此处补充你的代码
    };
    main()  {
        A a;
        cout << a.val << endl;
        a.GetObj() = 5;
        cout << a.val << endl;
    }

    输入无输出0
    5样例输入

    样例输出

    0
    5

    提示所缺代码具有如下形式:

        A(_________________ ){ val = n; }
    ________________ GetObj() {
    return _________________;
    }

    Code:

    #include <iostream>
    using namespace std;
    class A {
    public:
        int val;
    // 在此处补充你的代码
        A() {
            val = 0;
        }
        A(int v) {
            val = v;
        }
        A& GetObj() {
            return *this;
        }
    };
    main()  {
        A a;
        cout << a.val << endl;
        a.GetObj() = 5;
        cout << a.val << endl;
    }
    

    3w8:第三周程序填空题3

    描述

    下面程序的输出是:

    10

    请补足Sample类的成员函数。不能增加成员变量。

    #include <iostream>
    using namespace std;
    class Sample{
    public:
        int v;
        Sample(int n):v(n) { }
    // 在此处补充你的代码
    };
    int main() {
        Sample a(5);
        Sample b = a;
        cout << b.v;
        return 0;
    }

    输入无输出10样例输入

    样例输出

    10

    Code:

    #include <iostream>
    using namespace std;
    class Sample{
    public:
        int v;
        Sample(int n):v(n) { }
    // 在此处补充你的代码
        Sample(Sample& s) {
            v = 10;
        }
    };
    int main() {
        Sample a(5);
        Sample b = a;
        cout << b.v;
        return 0;
    }
    

      

    Analysis:[https://segmentfault.com/a/1190000005852333]

    在代码 Sample b = a;中,这里的=初始化,而不是赋值,在用同类型的对象对对象初始化的时候会调用复制构造函数。形如Sample(Sample& s),以同类型的引用作为构造函数的参数的构造函数是复制构造函数。在 Sample b = a;中,a是复制构造函数的参数,调用构造函数的对象的v的值被赋值为10。

    调用复制构造函数的三种情况

    1.初始化:当用一个对象去初始化同类的另一个对象时
    2.函数参数:如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的复制构造函数被调用
    3.函数返回值:如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用

    3w9:第三周程序填空题4

    描述

    下面程序的输出结果是:

    5,5

    5,5

    请填空:

    #include <iostream>
    using namespace std;
    class Base {
    public:
        int k;
        Base(int n):k(n) { }
    };
    class Big  {
    public:
        int v; Base b;
    // 在此处补充你的代码
    };
    int main()  {
        Big a1(5);    Big a2 = a1;
        cout << a1.v << "," << a1.b.k << endl;
        cout << a2.v << "," << a2.b.k << endl;
        return 0;
    }

    输入无输出5,5
    5,5样例输入

    样例输出

    5,5
    5,5

    提示所缺代码具有如下形式:

        Big ________________{ }
    Big ________________{ }

    Code:

    #include <iostream>
    using namespace std;
    class Base {
    public:
        int k;
        Base(int n):k(n) { }
    };
    class Big  {
    public:
        int v; Base b;
    // 在此处补充你的代码
        Big(int a):v(a), b(a){}
    };
    int main()  {
        Big a1(5);    Big a2 = a1;
        cout << a1.v << "," << a1.b.k << endl;
        cout << a2.v << "," << a2.b.k << endl;
        return 0;
    }
    

      

    Analysis: [https://segmentfault.com/a/1190000005852395]

    Big类是一个封闭类,在生成Big类对象之前,会先生成Base类的对象(调用Base类的构造函数生成Big类的成员对象b),然后再调用Big类的构造函数,生成Big类对象a1.
    代码Big a2 = a1;中,调用Big类默认的复制构造函数,以a1为默认复制构造函数的参数,生成对象a2.

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    【Swing】简单的计算器
    【SQL】嵌套查询与子查询
    【网络协议抓包分析】TCP传输控制协议(连接建立、释放)
    【网络协议抓包分析】IP互联网协议
    ******常见数据库笔试题*****
    OSI参考模型 VS TCP/IP参考模
    TCP/IP四层模型
    数组实现栈的功能
    子网掩码怎么计算
    C# 启动和结束一个线程
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10136420.html
Copyright © 2011-2022 走看看