博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
friend function in C++
阅读量:2399 次
发布时间:2019-05-10

本文共 1323 字,大约阅读时间需要 4 分钟。

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样.

友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。

我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。

为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率(即减少了类型检查和安全性检查等都需要的时间开销),但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。

友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。

复制代码 代码如下:

include “cmath”

include “iostream”

using namespace std;

class Point
{
public:
Point(double xx,double yy)
{
x=xx;
y=yy;
}
void GetXY();
friend double Distance(Point &a,Point &b);
protected:
private:
double x,y;
};
void Point::GetXY()
{
//cout<<”(“<x<<”,”<y<<”)”<

include

include

using namespace std;

class Point
{
public:
Point(double xx,double yy)
{
x=xx;
y=yy;
}
void GetXY();
friend double Distance(Point &a,Point &b);
friend ostream &operator <<(ostream &a,Point &b);
protected:
private:
double x,y;
};
// friend ostream& operator<<(ostream& o,A& another);
ostream &operator <<(ostream &out,Point &b) //在类中声明的时候,可以是ostream &a,函数定义的时候也可以是ostream &out
{
out<<”(“<

转载地址:http://svjob.baihongyu.com/

你可能感兴趣的文章
从一次周会看企业流程的执行与维护
查看>>
JIT生产方式的目标和方法体系(zt)
查看>>
关于project2003中几个视图的认识
查看>>
男人穿衣的20条黄金规律(zt)
查看>>
制造企业发展第三方物流的思路探讨 (zt)
查看>>
女人最想让男人知道的48件事(zt)
查看>>
英语学习方法总论(zt)
查看>>
企业软件入门:教你为协同软件分类(来自SINA)
查看>>
ERP解决企业中五个具体问题
查看>>
精益生产的本质(zt)
查看>>
学好英语的20个经典要诀(转)
查看>>
看板管理 (zt)
查看>>
基于信息融合的供应链合作伙伴选择刍议 (zt)
查看>>
对BPR七个阶段模型的理解
查看>>
[思维导图学习五] 思维导图在企业培训中的应用[转]
查看>>
企业物流营销组合模式探讨 (zt)
查看>>
浅谈执行力文化(zt)
查看>>
内部控制是加强执行力的关键因素(zt)
查看>>
实用英语40句(zt)
查看>>
企业知识管理咨询实操七(zt)
查看>>