寒假作业2月6号

第五章  静态成员与友元

一、填空题

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

#include <iostream.h>

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

void main()

{ Test t(10);

__t.show();_______

}

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

#include <iostream>

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<<test.Getnum()<<endl;

}

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

     #include <iostream.h>

#include <string.h>

#include <iomanip.h>

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<<setw(10)<<s.name<<setw(4)<<s.deg<<setw(8)<<s.level<<endl;}

};

void main()

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

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

process p;

cout<<"结 果:"<<"姓名"<<setw(6)<<"成绩"<<setw(8)<<"等级"<<endl;

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),让静态成员函数访问静态数据成员,并让静态数据成员是保户的。

#include <iostream>

using namespace std;

class AAA
{
    friend int static_re();
private:
    int a;
protected:
    static int b;
public:
    AAA(int a):a(a)
    {
        b++;
    }
    ~AAA()
    {
        b--;
        cout << "b=" << b << endl;
    }
    int get_int()
    {
        return a;
    }
    static int get_static()
    {
        return b;
    }
};

int static_re()
{
    AAA::b=100;
    cout << "B:" << AAA::b << endl;
    return AAA::b;
}

int AAA::b=0;

int main()
{
    AAA a1(10),a2(20),a3(30);
    cout << "a1_int=" << a1.get_int() << endl;
    cout << "a2_int=" << a2.get_int() << endl;
    cout << "a3_int=" << a3.get_int() << endl;
    cout << "static=" << a1.get_static() << endl;
    static_re();

    return 0;
}

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) 将上面程序中的友员改成普通函数,为此增加访问类中保护数据的成员函数。

#include <iostream>

class Animal {
public:

    void SetValue(int);

    void SetValue(int, int);

protected:

    int itsWeight;

    int itsAge;

};

void Animal::SetValue(int tw) {
    itsWeight = tw;

}

void Animal::SetValue(int tw, int tn) {
    itsWeight = tw;

    itsAge = tn;

}

int main() {
    Animal peppy;

    peppy.SetValue(5);

    peppy.SetValue(7, 9);

    return 0;

}

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;

}

 

 #include <iostream>
using namespace std;

class Boat;

class Car {
public:
    Car(int j) { size = j; }
    int Leisure(int time, Boat& bobj);

    void set(int j) { size = j; }

private:
    int size;
};

class Boat {
public:
    Boat(int j) { size = j; }
    int Leisure(int time, Car& aobj);

    void set(int j) { size = j; }

private:
    int size;
};

int Car::Leisure(int time, Boat& bobj) {
    return time * size * bobj.size;
}

int Boat::Leisure(int time, Car& aobj) {
    return time * size * aobj.size;
}

int main() {
    Car c1(2);
    Boat bl(3);
    int time = 4;

    cout << c1.Leisure(time, bl) << endl;

    return 0;
}

相关推荐

  1. 寒假作业26

    2024-02-18 16:52:03       52 阅读
  2. 寒假作业25

    2024-02-18 16:52:03       38 阅读
  3. 寒假作业213

    2024-02-18 16:52:03       50 阅读
  4. 假期作业 26

    2024-02-18 16:52:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 16:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 16:52:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 16:52:03       82 阅读
  4. Python语言-面向对象

    2024-02-18 16:52:03       91 阅读

热门阅读

  1. LeetCode171. Excel Sheet Column Number

    2024-02-18 16:52:03       50 阅读
  2. 使用 C++23 从零实现 RISC-V 模拟器(5):CSR

    2024-02-18 16:52:03       46 阅读
  3. DataX源码分析 Channel

    2024-02-18 16:52:03       48 阅读
  4. 力扣代码学习日记二

    2024-02-18 16:52:03       61 阅读
  5. Springboot之全局异常处理

    2024-02-18 16:52:03       52 阅读
  6. js str字符串的常用方法

    2024-02-18 16:52:03       51 阅读