静态成员函数与友元
宁夏师范学院数学与计算机科学学院
《面向对象程序设计(C++)》实验报告
实验序号:6实验项目名称:静态成员函数与友元
学 号
姓 名
专业班级
实验地点
指导教师
时间
一、实验目的及要求
1、掌握静态、动态生存期的概念;
2、掌握静态数据成员和静态成员函数的概念;
3、掌握友元函数的含义,友元函数和成员函数的区别,掌握友元函数的设计方法。
friend void cal(Rectangle r);
private:
int top,left,down,right;
};
void cal(Rectangle r)
{cout<<"矩形的周长是:"<<2*(fabs(r.top-r.down)+fabs(r.left-r.right))<<endl;
五、教师评语
签名:
日期:年月日
成绩
三、实验内容与步骤
说明:对下述实验内容给出实验结果并分析总结。
【验证题目】验证相关例题
【设计题目】
1.设计并测试一个矩形类(Rectangle),属性为矩形的左下与右上角的坐标,矩形水平放置。操作为计算矩形周长与面积。类对象的数据由友元函数来进行访问。并对比友元函数、成员函数和普通函数使用上的不同。参考程序如下:
cout<<"矩形的面积是:"<<(fabs(r.top-r.down))*(fabs(r.left-r.right))<<endl;
}
int main()
{
Rectangle r1(100,200,600,400);
cal(r1);
return 0;
}
2.定义Boat与Car两个类,二者都有weight属性,定义它们的一个友元函数totalWeight(),计算二者的重量和。
参考程序如下:
//lab6_2.cpp
#include <iostream>
#include <cmath>
using namespace std;
class Boat
{ public:
Boat(double w)
{ weight=w; }
friend double totalWeight(Boat a)
};
void main()
{ Boat aa(254);
Car bb(395);
cout<<"totalweight:"<<totalWeight(aa)+totalWeight(bb)<<endl;
}
3.课后运行教材习题9-9,体会静态数据成员和成员函数的含义。
四、分析与讨论
通过实验对友元函数有了一些了解,它不是类的成员函数,对于静态函数成员,它不随对象建立而分配空间,也不随对象的撤销而释放空间,静态成员函数没有this指针。
{return a.weight;}
private:
double weight;
};
class ar
{ public:
Car(double w)
{weight=w;
}
friend double totalWeight(Car b)
{return b.weight;}
private: double weight;
4、学习友元函数和友元类的组合使用方法。
二、实验设备(环境)及要求
硬件:PC(P 以上,128M以上内存)、因特网接入;
软件:Windows XP操作系统或更高版本、Office2003或更高版本、Visual C++6.0。
实验学时:1学时
其他要求:验证题目和设计题目尽量完成;任选一个设计题目写实验报告
//lab6_1.cpp
#include <iostream>
#include <cmath>
using namespace std;
class Rectangle
{ public:
Rectangle(int t=0, int l=0, int d=0, int r=0)
{ top=t; left=l; down=d; right=r; } ~Rectangle() {};