• 寒假作业2月6号


    第五章  静态成员与友元

    一、填空题

        1、一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。

    #include

    class Test

    { private:

    static int num;

    public:

    Test(int);

    void show();

    };

    __int test::num = 5;_______

    Test::Test(int n)

    { num=n; }

    void Test::show()

    { cout<

    void main()

    { Test t(10);

    __t.show();_______

    }

      2 、在下面程序的底画线处填上适当的字句,使该程序执行结果为40。

    #include

    class Test

    { public:

    ____static int x__;

    Test (int i=0)

    {x=i+x;}

    int Getnum()

    {return Test::x+7;}

    };

    Int test::x=33_______;

    void main()

    {Test test;

    cout<

    }

    3 、下列程序运行的结果是___________

         #include

    #include

    #include

    class student

    {char name[8];

    int deg;

    char level[7];

    friend class process; // 说明友元类

    public:

    student(char na[],int d)

    { strcpy(name,na);

    deg=d;

    }

    };

    class process

    { public:

    void trans(student &s)

    {int i=s.deg/10;

    switch(i)

    {case 9:

    strcpy(s.level, "优");break;

    case 8:

    strcpy(s.level,"良");break;

    case 7:

    strcpy(s.level,"中");break;

    case 6:

    strcpy(s.level,"及格");break;

    default:

    strcpy(s.level,"不及格");

    }

    }

    void show(student &s)

    {cout<

    };

    void main()

    { student st[]={student("张三",78),student("李四",92),student("王五

    ",62),student("孙六",88)};

    process p;

    cout<<"结 果:"<<"姓名"<

    for(int i=0;i<4;i++)

    { p.trans(st[i]);

    p.show(st[i]);}

    }

     姓名   成绩   等级

     张三   78     中

     李四   92     优

     王五   62     及格

     孙六   88     良

    二、编程题

    1.

     (1) 编写一个类,声明一个数据成员和一个静态数据成员。让构造函数初始化数据成员,并把静态数据成员加1,让析构函数把静态数据成员减1。

     (2) 根据(1)编写一个应用程序,创建三个对象,然后显示它们的数据成员和静态数据成员,再析构每个对象,并显示它们对静态数据成员的影响。

     (3) 修改(2),让静态成员函数访问静态数据成员,并让静态数据成员是保户的。

    1. #include
    2. using namespace std;
    3. class AAA
    4. {
    5. friend int static_re();
    6. private:
    7. int a;
    8. protected:
    9. static int b;
    10. public:
    11. AAA(int a):a(a)
    12. {
    13. b++;
    14. }
    15. ~AAA()
    16. {
    17. b--;
    18. cout << "b=" << b << endl;
    19. }
    20. int get_int()
    21. {
    22. return a;
    23. }
    24. static int get_static()
    25. {
    26. return b;
    27. }
    28. };
    29. int static_re()
    30. {
    31. AAA::b=100;
    32. cout << "B:" << AAA::b << endl;
    33. return AAA::b;
    34. }
    35. int AAA::b=0;
    36. int main()
    37. {
    38. AAA a1(10),a2(20),a3(30);
    39. cout << "a1_int=" << a1.get_int() << endl;
    40. cout << "a2_int=" << a2.get_int() << endl;
    41. cout << "a3_int=" << a3.get_int() << endl;
    42. cout << "static=" << a1.get_static() << endl;
    43. static_re();
    44. return 0;
    45. }

    2.

     (1) 下述代码有何错误,改正它。

    #include < iostream>

    using namespace std;

    class Animal;

    void SetValue(Animal&, int);

    void SetValue(Animal&, int, int);

    class Animal

    {

    public:

        friend void SetValue(Animal&, int);

    protected:

    int itsWeight;

    int itsAge;

    };

    void SetValue(Animal& ta, int tw)

    {

        a.itsWeight = tw;   ---》ta.itsWeight=tw;

    }

    void SetValue(Animal& ta, int tw, int tn)

    {

        ta.itsWeight = tw;

        ta.itsAge = tn;

    }

    int main()

    {

        Animal peppy;

        SetValue(peppy, 5);

        SetValue(peppy, 7,9);

     

    return 0;

    }

     (2) 将上面程序中的友员改成普通函数,为此增加访问类中保护数据的成员函数。

    1. #include
    2. class Animal {
    3. public:
    4. void SetValue(int);
    5. void SetValue(int, int);
    6. protected:
    7. int itsWeight;
    8. int itsAge;
    9. };
    10. void Animal::SetValue(int tw) {
    11. itsWeight = tw;
    12. }
    13. void Animal::SetValue(int tw, int tn) {
    14. itsWeight = tw;
    15. itsAge = tn;
    16. }
    17. int main() {
    18. Animal peppy;
    19. peppy.SetValue(5);
    20. peppy.SetValue(7, 9);
    21. return 0;
    22. }

    3. 重新编写下述程序,使函数Leisure()成为类Car和类Boat的函数。作为重新编程,在类Car和类Boat中,增加函数set()。

    #include < iostream>

    using namespace std;

    class Boat;

    class Car

    {

    public:

        Car(int j){size = j;}

        friend int Leisure(int time, Car& aobj, Boat& bobi);

    protected:

        int size;

    class Boat

    {

    public:

        Boat(int j){size = j;}

        friend int Leisure(int time, Car& aobj, Boat& bobj);

    protected:

        int size;

    };

    int Leisure(int time, Car& aobj, Boat& bobi)

    {

        return time * aobj.size *bobi.size;

    }

    };

    int main()

    {

        Car c1(2);

        Boat bl(3);

        int time = 4;

        cout << Leisure(time, cl,bl);

     

    return 0;

    }

     

    1.  #include
    2. using namespace std;
    3. class Boat;
    4. class Car {
    5. public:
    6. Car(int j) { size = j; }
    7. int Leisure(int time, Boat& bobj);
    8. void set(int j) { size = j; }
    9. private:
    10. int size;
    11. };
    12. class Boat {
    13. public:
    14. Boat(int j) { size = j; }
    15. int Leisure(int time, Car& aobj);
    16. void set(int j) { size = j; }
    17. private:
    18. int size;
    19. };
    20. int Car::Leisure(int time, Boat& bobj) {
    21. return time * size * bobj.size;
    22. }
    23. int Boat::Leisure(int time, Car& aobj) {
    24. return time * size * aobj.size;
    25. }
    26. int main() {
    27. Car c1(2);
    28. Boat bl(3);
    29. int time = 4;
    30. cout << c1.Leisure(time, bl) << endl;
    31. return 0;
    32. }

  • 相关阅读:
    【Hadoop】学习笔记(六)
    ASP.NET Core 6框架揭秘实例演示[37]:重定向的N种实现方式
    开始打击了
    JavaScript基础 JavaScript第二天 1. 运算符
    驱动和嵌入式开发其他注意事项——Volatile 关键字
    python如何将字符串进行拆分——split函数的用法及实例
    linux发展历程
    Supervisor 后台进程管理
    顽固污渍一键去除,还有紫外线除菌功能,希亦超声波清洗机体验
    Unity 数字字符串逗号千分位
  • 原文地址:https://blog.csdn.net/2201_75638688/article/details/136132079