iis7.5网站配置,免费做网站模板在哪里做,宣城网站开发,营销网站参考友元函数#xff08;Friend Function#xff09;和 友元类#xff08;Friend Class#xff09;是用于控制类的访问权限的机制。这允许特定的函数或类访问另一个类的私有成员和保护成员#xff0c;打破了 C 的封装性规则。
友元函数
定义
友元提供了不同类的成员函数之间…友元函数Friend Function和 友元类Friend Class是用于控制类的访问权限的机制。这允许特定的函数或类访问另一个类的私有成员和保护成员打破了 C 的封装性规则。
友元函数
定义
友元提供了不同类的成员函数之间类的成员函数和一般函数之间进行数据共享的机制。通过友元一个普通函数或者另一个类中的成员函数可以访问类中的私有成员和保护成员。友元的正确使用能提高程序的运行效率但同时也破坏了类的封装性和数据的隐藏性导致程序可维护性变差。一个函数可以是多个类的友元函数但是每个类中都要声明这个函数。
#includeiostream
using namespace std;
class A
{
public:friend void set_show(int x, A a);//该函数是友元函数的声明
private:int data;
};void set_show(int x, A a)
{a.data x;cout a.data endl;
}
int main()
{class A a;set_show(1,a);return 0;
}//结果为 1
使用友元函数注意 1.友元函数并不是该类的成员函数因此它不具有this指针。
友元类
定义
友元类的所有成员函数都是另一个类的友元函数都可以访问另一个类中的隐藏信息包括私有成员和保护成员。但是另一个类里面也要相应的进行声明。
#includeiostream
using namespace std;
class A
{
public:friend class C; //友元类声明
private:int data;
};class C
{
public:void set_show(int x, A a){a.data x;cout a.data endl;}
};int main()
{class A a;class C c;c.set_show(1,a);return 0;
}
//结果为 1
使用友元类时注意
1.友元关系不能被继承。
2.友元关系是单向的不具有交换性。若类B是类A的友元类A不一定是类B的友元要看在类中是否有响应的声明
3.友元关系不具有传递性。若类B是类A的友元类C是类B的友元类C不一定是类A的友元同样要看类中是否有响应的声明。