C++友元函数详细解释
时间: 2023-11-14 11:59:38 浏览: 94
C++中的友元函数是一种特殊的函数,可以访问一个类的私有成员和保护成员。在C++中,类的成员函数可以访问类的私有成员和保护成员,而友元函数可以像类的成员函数一样访问类的私有成员和保护成员。但是,友元函数不属于类的成员函数,它可以是全局函数或其他类的成员函数。
友元函数的声明方式是在类的声明中将函数声明为友元函数。例如:
```c++
class MyClass {
public:
MyClass(int a, int b) : x(a), y(b) {}
friend int sum(MyClass obj); // 友元函数声明
private:
int x;
int y;
};
```
在上面的例子中,sum函数被声明为MyClass类的友元函数。因此,sum函数可以访问MyClass类的私有成员和保护成员。
下面是一个使用友元函数的例子:
```c++
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int a, int b) : x(a), y(b) {}
friend int sum(MyClass obj); // 友元函数声明
private:
int x;
int y;
};
int sum(MyClass obj) {
return obj.x + obj.y;
}
int main() {
MyClass obj(3, 4);
cout << sum(obj) << endl;
return 0;
}
```
在上面的例子中,sum函数被定义为一个全局函数,并被声明为MyClass类的友元函数。在main函数中,我们创建了一个MyClass对象obj,并将其传递给sum函数进行求和计算。
需要注意的是,友元函数只是一种访问类的私有成员和保护成员的方式,但并不意味着友元函数是类的成员函数。因此,友元函数不能访问类的this指针,也不能访问类的静态成员。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)