请用一段代码来举例友元函数
时间: 2024-03-25 21:41:08 浏览: 16
下面是一个简单的例子,演示了如何在 C++ 中使用友元函数:
```c++
#include <iostream>
using namespace std;
class Box {
double width;
public:
friend void printWidth(Box box);
void setWidth(double wid);
};
void Box::setWidth(double wid) {
width = wid;
}
void printWidth(Box box) {
cout << "Width of box : " << box.width << endl;
}
int main() {
Box box;
box.setWidth(10.0);
printWidth(box);
return 0;
}
```
在上面的代码中,我们定义了一个名为 `Box` 的类,并声明了一个友元函数 `printWidth`,它可以访问 `Box` 类的私有成员 `width`。在 `main` 函数中,我们创建了一个 `Box` 对象 `box`,并将其宽度设置为 10.0。然后,我们调用 `printWidth` 函数来打印 `box` 对象的宽度。
输出结果为:
```
Width of box : 10
```
可以看到,`printWidth` 函数可以访问 `Box` 类的私有成员 `width`,这是因为它被声明为 `Box` 的友元函数。
相关问题
友元函数代码
下面是一个示例代码,展示了如何在C++中定义和使用友元函数:
```cpp
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
public:
MyClass(int a) {
x = a;
}
friend void printX(MyClass obj); //声明友元函数
};
void printX(MyClass obj) {
cout << "The value of x is: " << obj.x << endl; // 可以访问私有成员x
}
int main() {
MyClass obj1(10);
printX(obj1); //调用友元函数
return 0;
}
```
在上面的代码中,我们定义了一个名为`MyClass`的类,在类中定义了一个私有成员变量`x`和一个公有构造函数。我们还声明了一个友元函数`printX`,该函数可以访问`MyClass`类的私有成员变量`x`。在主函数中,我们创建了一个`MyClass`对象`obj1`,并将其作为参数传递给`printX`函数,从而打印出了`x`的值。
c++友元函数具体举例
下面是一个简单的例子,其中一个类定义了一个私有成员变量,而另一个类的成员函数可以访问该变量,这个成员函数就是友元函数。
```c++
class B; // 前向声明
class A {
private:
int x;
public:
void setX(int i) {
x = i;
}
friend void showX(A a, B b); // 友元函数声明
};
class B {
private:
int y;
public:
void setY(int i) {
y = i;
}
friend void showX(A a, B b); // 友元函数声明
};
void showX(A a, B b) { // 友元函数定义
cout << "A's x is " << a.x << " and B's y is " << b.y << endl;
}
int main() {
A a;
B b;
a.setX(10);
b.setY(20);
showX(a, b);
return 0;
}
```
在这个例子中,类A和类B互为友元,它们之间的成员函数可以相互访问私有成员变量x和y。函数showX()是一个友元函数,它可以访问类A和类B的私有成员变量。在main()函数中,我们创建了类A和类B的对象,并设置了它们的成员变量。然后我们调用showX()函数来打印这些变量的值。