内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx

上传人:b****4 文档编号:714289 上传时间:2022-10-12 格式:DOCX 页数:12 大小:330.49KB
下载 相关 举报
内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx_第1页
第1页 / 共12页
内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx_第2页
第2页 / 共12页
内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx_第3页
第3页 / 共12页
内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx_第4页
第4页 / 共12页
内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx

《内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx》由会员分享,可在线阅读,更多相关《内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx(12页珍藏版)》请在冰豆网上搜索。

内蒙古科技大学面向对象的程序设计实验6静态成员和友元.docx

内蒙古科技大学面向对象的程序设计实验6静态成员和友元

 

内蒙古科技大学面向对象的程序设计实验6静态成员和友元(总14页)

内蒙古科技大学

面向对象的程序设计

实验报告

 

 

课程名称:

面向对象的程序设计

姓名:

陈伟光

实验名称:

静态成员和友元

学号:

18

任课教师:

刘月峰

专业:

软件工程

指导教师:

刘月峰

班级:

15-软件一班

 

 

一、实验目的

  1.理解静态成员(静态数据成员、静态成员函数)的作用与使用;

2.理解友元(友元函数、友元类)的作用于使用。

二、实验环境

编译器:

VisualC++.

操作系统:

Windows7 旗舰版

 

三、实验内容

 二、实验内容

练习

(一):

1.理解下面的程序,并在VC++下运行查看结果,回答程序后面的问题。

#include<>

#include<>

classCStudent

{

public:

CStudent(char*n,inta);

~CStudent();

staticvoidSetAge(intage);

private:

char*name;

intage;

staticintnTotalObj;

};

intCStudent:

:

nTotalObj=0;

CStudent:

:

CStudent(char*n,inta)

:

age(a)

{

intnLen=strlen(n);

name=newchar[nLen+1];

strcpy(name,n);

name[nLen]=’\0’;

nTotalObj++;

}

CStudent:

:

~CStudent()

{

delete[]name;

nTotalObj--;

}

voidCStudent:

:

SetAge(intage)

{

this->age=age;

}

voidmain()

{

CStudentstu1("张三",25);

CStudentstr2("李四",26);

cout<<"CStudent:

:

nTotalObj="<

:

nTotalObj<

}

问题一:

以上程序编译能通过吗,为什么

问题二:

成员变量nTotalObj在程序中起什么作用,它是如何实现的

问题三:

如果规定该程序的主函数和类CStudent中的成员变量的属性不允许改变,应该如何改正该程序

2.理解下面的程序,并在VC++下运行查看结果,回答程序后面的问题。

#include<>

#include<>

classCStudent

{

public:

CStudent(char*n,inta);

~CStudent();

private:

char*name;

intage;

};

CStudent:

:

CStudent(char*n,inta)

:

age(a)

{

intnLen=strlen(n);

name=newchar[nLen+1];

strcpy(name,n);

name[nLen]=’\0’;

}

CStudent:

:

~CStudent()

{

delete[]name;

}

classCTeacher

{

public:

CTeacher(char*tn,intta);

~CTeacher();

voidSetStuAge(inta);

 

private:

char*name;

intage;

CStudentstu;

};

CTeacher:

:

CTeacher(char*tn,intta)

:

age(ta)

{

intnLen=strlen(tn);

name=newchar[nLen+1];

strcpy(name,tn);

name[nLen]=’\0’;

}

CTeacher:

:

~CTeacher()

{

delete[]name;

}

voidCTeacher:

:

SetStuAge(inta)

{

=a;

}

voidmain()

{

CStudentstu("张三",25);

CTeachertea("李四",26);

}

问题一:

以上程序有两大错误,试指出来,并改正之

练习

(二):

1.某商店经销一种货物。

货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下货物库存的总重量。

试用C++模拟商店货物购进和卖出的情况。

(提示:

将总重量定义为静态成员)

四、实验过程

练习1题目提供源代码如下

编译结果如下

分析之后得出结论

首先静态成员函数SetAge中不可以使用指针,也不可以直接使用非静态数据成员age此处应该使用对象名或者类名间接引用age

 

其次nTotalObj为私有属性,不可以直接访问,且题目要求不可以修改其属性,则添加一个成员函数,使其返回值等于nTotalObj,则代替了原先nTotalObj的功能

 

修改之后的代码如下

然后再次编译运行结果如下

运行结果正确,且不影响nTotalObj的计数器功能,代码修改正确

 

练习2

题目提供源代码如下

编译之后结果如下

分析错误原因有两点

错误1CTeacher类中的成员函数SetStuAge不能直接访问CStudent类内嵌成员stu的数据成员age

错误2CTeacher类构造函数的初始化含有错误,内嵌对象stu的数据成员也应该包含在内

 

修改之后代码如下

运行结果如下

成功运行,修改正确

 

练习3

根据题意,所编写代码如下

尝试测试运行结果

该代码包含题目要求的所有功能,运行完毕 

五、实验总结

实验源代码:

练习

(一)

 

 

出  1.购入  2.售出"<

              cin>>swit; 

              switch(swit)     

              { 

              case0:

cout<

                     break;

              case1:

();

                            ();

                            cout<

                     break;     

              case2:

();

                            ();

                            cout<

                     break;

              } 

       }

      

}

 

六、参考文献

参考的资料:

C++面向对象程序设计

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1