学习c++的时候,朋友函数和朋友类还是比较难理解的。但是,要理解,我需要说明几点。
先说朋友功能。
(1)好友功能:
1)在1)C++中引入好友功能,提供外部访问的窗口(除了他自己的意外);
2)这个friend函数不属于类的成员函数,而是在类外定义的普通函数,只在类内声明该函数可以直接访问类的私有或受保护成员。
使用朋友函数声明的一般形式:
朋友& lt返回类型>:& lt函数名>:(& lt参数列表>:);
使用好友功能的注意事项:
1、friend函数在类中使用关键字friend进行修改,但是这个函数不是类的成员函数,它的声明可以放在类的私有部分,也可以放在类的公共部分。朋友函数的定义是在类外实现的,不需要类限制。
2.一个类中的成员函数可以是另一个类的友元函数,一个函数可以是多个类的友元函数。
3.Friend函数可以访问一个类中的私有成员和其他数据,但是数据成员不能直接用于访问,需要引用对象。
4.Friends函数在调用上和一般函数一样,不引用对象。
比如以下面的形式:解释并理解上面第1、3、4点的用法。
#include <。iostream>。
#include <。cstring>。
使用命名空间标准;
class persion{
公共:
persion(char * pn);
//好友功能;
//注意参数列表中通常有一个引用类型的参数。原因请参考上面的使用点3、4。
朋友void setweighth(persion & amp;p,int h);
void disp();//类成员函数
私人:
char name[20];
体重,年龄;
};
Persion::persion(char *pn) //构造函数
{
strcpy(名称,pn);
weighth = 0;
}
void persion::disp()
{
cout<。& lt名称<。& lt"-" & lt;& ltweigth & lt。& ltendl
}
friend函数的具体实现:没有(perion::setweighth)这样的类限定,可以和上面的disp()比较。一个属于有资格的类成员,但不属于没有资格的类成员函数。
void setweighth(persion & amp;pn,int w)
{
strcpy(pn.name,pn);//实现字符串复制
pn . weighth = w;//私有成员数据分配
}
void main()
{
persion p(" Zhan San ");
//调用实现setweigth(),与一般函数调用一致。
setweigth(第60页);
p . disp();//调用类的成员函数。
}
关于第2点的使用,我给出一个代码示例:
#include <。iostream>。
#include <。cstring>。
使用命名空间标准;
级轮;
class car{
公共:
car(char * pn);
无效运行(车轮和w);//成员函数,在wheel类中实现为friend函数
私人:
char name[20];
};
car::car(char *pn)
{
strcpy(名称,pn);
}
class wheel{
公共:
车轮(int s);
朋友无效汽车::运行(车轮和;w);//这里把car类的成员函数做成friend函数。
私人:
int速度;
};
车轮::车轮(int s)
{
速度= s;
}
int main(int argc,char const *argv[])
{
车轮w(60);
c车(“新车”);
c . run(w);
返回0;
}
void car::run(车轮和类成员函数w) //car的实现
{
cout<。& lt“汽车正在行驶”/>
1.《友元函数 c++中友元函数理解与使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《友元函数 c++中友元函数理解与使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1281890.html