北京网站搭建方案,剪辑师培训班有用吗,成都包装设计公司哪家好,网站模板编号第五章 静态成员与友元
一、填空题 1、一个类的头文件如下所示#xff0c;num初始化值为5#xff0c;程序产生对象T#xff0c;且修改num为10#xff0c;并使用show()函数输出num的值10。
#include iostream.h
class Test
{ private:
static int num;
publi…第五章 静态成员与友元
一、填空题 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)
{ numn; }
void Test::show()
{ coutnumendl; }
void main()
{ Test t(10);
__t.show();_______
} 2 、在下面程序的底画线处填上适当的字句使该程序执行结果为40。
#include iostream
class Test
{ public:
____static int x__;
Test (int i0)
{xix;}
int Getnum()
{return Test::x7;}
};
Int test::x33_______;
void main()
{Test test;
couttest.Getnum()endl;
}
3 、下列程序运行的结果是___________ #include iostream.h
#include string.h
#include iomanip.h
class student
{char name8;
int deg;
char level7;
friend class process; // 说明友元类
public:
student(char na,int d)
{ strcpy(name,na);
degd;
}
};
class process
{ public:
void trans(student s)
{int is.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)
{coutsetw(10)s.namesetw(4)s.degsetw(8)s.levelendl;}
};
void main()
{ student st{student(张三,78),student(李四,92),student(王五
,62),student(孙六,88)};
process p;
cout结 果:姓名setw(6)成绩setw(8)等级endl;
for(int i0;i4;i)
{ p.trans(sti);
p.show(sti);}
} 姓名 成绩 等级 张三 78 中 李四 92 优 王五 62 及格 孙六 88 良
二、编程题
1. (1) 编写一个类声明一个数据成员和一个静态数据成员。让构造函数初始化数据成员并把静态数据成员加1让析构函数把静态数据成员减1。 (2) 根据(1)编写一个应用程序创建三个对象然后显示它们的数据成员和静态数据成员再析构每个对象并显示它们对静态数据成员的影响。 (3) 修改(2)让静态成员函数访问静态数据成员并让静态数据成员是保户的。
#include iostreamusing 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::b100;cout B: AAA::b endl;return AAA::b;
}int AAA::b0;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.itsWeighttw; } 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 iostreamclass 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;
}