东阳网站建设怎么选,汕头刚刚发生的事,长春做网站的公司,wordpress 统计字数第五章 静态成员与友元
一、填空题 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::x 33;______;
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)让静态成员函数访问静态数据成员并让静态数据成员是保户的。
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; } 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; } 将上面程序中的友员改成普通函数为此增加访问类中保护数据的成员函数。
改后
#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; } int getSize() { return size; } // 公有访问函数 private: int size;
}; class Boat {
public: Boat(int j) { size j; } int Leisure(int time, Car aobj); void set(int j) { size j; } int getSize() { return size; } // 公有访问函数 private: int size;
}; int Car::Leisure(int time, Boat bobj) { return time * getSize() * bobj.getSize(); // 使用公有访问函数
} int Boat::Leisure(int time, Car aobj) { return time * getSize() * aobj.getSize(); // 使用公有访问函数
} int main() { Car c1(2); Boat bl(3); int time 4; cout c1.Leisure(time, bl) endl; return 0;
}