C++面向对象程序设计实验报告(6)

2025-11-16

实验4数据共享与保护

4.1 实验目的和要求

1.观察程序运行中变量的作用域、生存期。 2.学习类的静态成员的使用。 3.理解类的友元函数、友元类。

4. 学习多文件结构在C++程序中的使用。

4.2 所占学时数

本实验安排2个实验课时.

4.3 实验任务

4.3.1 任务一 (1)题目名称

定义一个Girl类和一个Boy类,这两个类中都有表示姓名、年龄的私有成员变量,都要定义构造函数、析构函数、输出成员变量信息的公有成员函数。 1.根据要求定义相应的类;

2.将Girl类作为Boy类的友元类,在Girl类的成员函数visitboy(boy &)中访问boy类的私有成员,观察程序运行结果; 3.在boy类的某成员函数visitgirl(girl &)中试图访问girl类的私有成员,观察编译器给出的错误信息,理解友元的不可逆性; 4.主函数中正确定义两个类的对象,调用各自的成员函数实现相应的功能;

5.再将boy类作为girl类的友元类,在boy类的某成员函数visistgirl(girl &)中访问girl类的私有成员,观察编译器给出的信

息;

6.删除两个类中的函数visitgirl(girl &),visitboy(boy &),定义一个顶层函数visitboygirl(boy &,girl &),作为以上两个类的友元,通过调用该函数输出男孩和女孩的信息。

(2)构思过程(可用文字、流程图、UML图等方式表达) 首先,根据要求编写两个类:女孩类,男孩类;类中要包含姓名,年龄生日等信息,编写函数,使两个类能够实现基本操作,再有,要求女孩类为男孩类的友元,要用visitboy(boy &)这个关键语句,按要求编写程序,观察出错信息,最后删除类之间友元关系,定义顶层函数,用visitboygirl(boy &,girl &)访问男孩女孩类成员。 (3)程序源码

#include using namespace std; class Boy {

private :

char name1 ; int age1; public:

Boy (){name1='A';age1=0;}

Boy(char a,int i){name1=a;age1=i;} ~Boy(){} public:

int GetAge (){return age1;} void SetAge(int a){age1=a;} char GetName (){return name1;} void SetName(char a){name1=a;} void show () {

cout<<\\ }

friend class Girl; };

class Girl {

private :

char name2; int age2; public:

Girl (){name2='B';age2=1;}

Girl(char a,int i){name2=a;age2=i;} ~Girl(){} public:

int GetAge (){return age2;} void SetAge(int a){age2=a;} char GetName (){return name2;} void SetName(char a){name2=a;} void show() {

cout<<\”<

public:

void visitBoy(Boy&b) {

name2=b.name1; age2=b.age1; } };

int _tmain(int argc, _TCHAR* argv[]) {

Boy b; b.show();

b.SetName ('o');

<

}

b.SetAge(12);

cout<<\cout<<\b.show(); Girl n; n.show();

n.visitBoy(b);

cout<<\cout<<\n.show(); return 0;

注:

①在编写第3个要求时在Boy类中加代码: public :

void visitGirl(Girl&g) {

name1=g.name2; age1=g.age2; }

②在编写第5个要求时在Boy类中加代码: public :

void visitGirl(Girl&g) {

name1=g.name2; age1=g.age2; }

在Girl类中加代码: friend class Boy; 在main函数中加代码:

b.visitGirl(n); b.show ();

③编写第6个要求,定义顶层函数visitboygirl(boy &,girl &),

作为以上两个类的友元,代码如下: #include using namespace std; class Girl; class Boy {

private :

char name1 ; int age1; public:

Boy (){name1='A';age1=0;}

Boy(char a,int i){name1=a;age1=i;} ~Boy(){} public:

int GetAge (){return age1;} void SetAge(int a){age1=a;} char GetName (){return name1;} void SetName(char a){name1=a;}

friend void visitboygirl(Boy &b,Girl &g); };

class Girl {

private :

char name2; int age2; public:

Girl (){name2='B';age2=1;}

Girl(char a,int i){name2=a;age2=i;} ~Girl(){} public:

int GetAge (){return age2;} void SetAge(int a){age2=a;} char GetName (){return name2;} void SetName(char a){name2=a;}

friend void visitboygirl(Boy &b,Girl &g); };


C++面向对象程序设计实验报告(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工程经济学--课后习题

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219