- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二友元、重载和引用.doc
PAGE
PAGE 26
实验二 友元、重载和引用
一、 实验目的和要求
1 掌握友元的说明与定义;
2 掌握友元函数、友元成员、友元类的概念及设计方法。
3 掌握函数重载的概念和使用方法;
4 掌握几种运算符重载的方法。
5 掌握引用的概念和语法;
6 掌握用引用传递函数参数的方法。
二、 基本概念
(1)友元的说明与定义
友元的定义
友元的定义形式是将friend关键字放在函数名或类名的前面。
friend 函数返回类型 函数名(参数表);
friend class 类名;//定义友元类
(2)运算符重载的方法
运算符重载为类的成员函数的定义与一般的成员函数相似,对类成员的访问与一般成员函数相同,定义格式如下:
type operator 运算符(参数表)
{
//操作定义;
}
其中,type为返回类型。operator是运算符重载关键字。 “运算符”为所要重载的运算符符号。参数表中列出了该运算符所需要的操作数。
(3)引用的概念和语法
引用是给对象起个别名,它的作用是给函数传递大型的对象或从函数中返回左值。
定义引用的格式是:
type 名称
其中:type 是要引用的类型,
是引用声明符
名称 是指引用的名字。
三、 程序例题
例2.1 使用友元函数计算线段距离。
程序实现:
#includeiostream.h
#include math.h
class Point //Point类定义
{ private:
int X, Y; //私有数据成员
public: //外部接口
Point(int xx = 0, int yy = 0) {X = xx, Y = yy;}
int GetX( ) {return X;}
int GetY( ) {return Y;}
friend float fDist(Point a, Point b); //友元函数声明
};
float fDist(Point p1, Point p2) //友元函数实现
{ double X = double(p1.X_p2.X); //通过对象访问私有函数成员
double Y = double(p1.Y_p2.Y);
return float(sqrt(X*X+Y*Y));
}
void main( )
{ Point myp1(1, 1), myp2(4, 5); //定义Point类的对象
cout The distance is: ;
cout fDist(myp1, myp2) endl; //计算两点间的距离
}
程序运行结果:
The distance is: 5
本例中,我们采用友元函数实现计算屏幕上两点之间距离的功能。屏幕上的点用Point类描述,两点的距离用普通函数fDist来计算,这个函数需要共享Point类的私有数据成员X和Y,为了做到共享,将fDist声明为Point类的友元函数。
例题 2.2 输入10个数,输出它们中的最大值、最小值。
程序实现:
#include iostream.h
class Array //定义数组类
{ int a[10];
public:
int Set( );
friend class Lookup; //查找类是数组类的友元
};
class Lookup //定义查找类
{public:
void Max(Array x); //查找最大值成员函数
void Min(Array x); //查找最小值成员函数
};
int Array::Set( )
{ int i;
cout 请输入十个数: endl;
for(i = 0; i 10; i++)
cin a[i];
return 1;
}
您可能关注的文档
最近下载
- 2024宜春职业技术学院招聘笔试真题及参考答案详解.docx VIP
- 南京市南师附中2024-2025学年高二上学期期中考试化学试卷.pdf VIP
- 2022年土地登记代理人题库700道精编答案.docx
- 艺术歌曲《满江红》的演唱技巧与情感处理.pdf VIP
- 2025年衢州市xx乡镇“十五五”发展规划.docx VIP
- 现代大学英语精读3(第三版)课后习题答案.pdf
- 电力电子技术(本科)电子科技大学含答案.doc VIP
- 2025-2030中国天然气管道行业前景动态与需求规模预测研究报告.docx
- 在校证明模板.pdf VIP
- 广东省佛山市南海区2022年人教版小升初考试数学试卷(原卷版+解析).docx VIP
原创力文档


文档评论(0)