欢迎来到军工软件开发人才培养基地——学到牛牛

C++中友元函数和友元类的作用是什么?

时间:2024-05-06 07:01:10 来源:学到牛牛

在C++中,有时候需要访问类的私有成员,但是这些成员只能在类内部访问,对于类外部的函数和类来说是无法访问的。在这种情况下,可以使用友元函数和友元类来解决这个问题。

 

1680051852647.jpg

 

友元函数是指在类定义内部声明的非成员函数,该函数可以访问类的私有成员和保护成员。为了使函数成为类的友元函数,需要在类的定义内部使用friend关键字进行声明。这个友元函数并不属于类的成员函数,但它能够访问该类的所有私有成员和保护成员。友元函数可以是全局函数,也可以是其他类的成员函数。

 

例如,假设有一个类A,其中有一个私有变量x和一个友元函数f。下面是如何定义一个友元函数:

 

class A{

private:

    int x;

    friend void f(A&);

};

在这个例子中,函数f被声明为A的友元函数。这意味着函数f可以访问A的私有成员x。

 

友元类是指一个类能够访问另一个类的私有成员和保护成员。为了使类成为另一个类的友元类,需要在该类的定义中使用friend关键字声明。这个友元类能够访问另一个类的私有成员和保护成员,但是另一个类并不能访问该友元类的私有成员和保护成员。

 

例如,假设有两个类A和B,其中B是A的友元类。下面是如何定义一个友元类:

 

class A{

private:

    int x;

    friend class B;

};

 

class B{

public:

    void function(A& a){

        a.x = 5;

    }

};

在这个例子中,类B被声明为A的友元类。这意味着类B可以访问A的私有成员x。

 

需要注意的是,友元函数和友元类破坏了类的封装性。因此,应该谨慎使用友元函数和友元类,只在必要的时候使用。