友元函数怎么使用,能不能给我举个例子,并附上详细的解释,并把这个程序运行的步骤说明一下
时间: 2024-05-15 07:18:01 浏览: 4
好的,我明白了您的问题。
友元函数是一种特殊的函数,它可以访问类的私有成员和受保护成员。在C++中,友元函数可以被定义为类的成员函数或独立的非成员函数。下面是一个例子:
```
#include<iostream>
using namespace std;
class MyClass {
private:
int x;
public:
MyClass() { x = 0; }
void setX(int a) { x = a; }
friend void printX(MyClass obj); // 声明友元函数
};
void printX(MyClass obj) {
cout << "The private value of MyClass is: " << obj.x << endl; // 访问私有成员变量
}
int main() {
MyClass myObj;
myObj.setX(10);
printX(myObj);
return 0;
}
```
在这个例子中,我们定义了一个名为`MyClass`的类,它有一个私有成员变量`x`和一个公共成员函数`setX`,用于设置私有成员变量的值。然后我们定义了一个名为`printX`的友元函数,它可以访问`MyClass`类的私有成员变量`x`。在`main`函数中,我们创建一个名为`myObj`的对象,并使用`setX`函数设置`x`的值为`10`,然后调用`printX`函数来打印`x`的值。
程序的运行步骤如下:
1. 定义`MyClass`类和`printX`函数。
2. 在`MyClass`类中声明`printX`函数是`MyClass`类的友元函数。
3. 在`main`函数中创建一个`MyClass`类的对象`myObj`。
4. 使用`setX`函数设置`myObj`的私有变量`x`的值。
5. 调用`printX`函数,打印`myObj`对象的私有变量`x`的值。
注意:友元函数不是类的成员函数,因此它无法通过`this`关键字访问它的类的成员变量。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)