友元函数和友元类
1 目标
本文的目的是了解友元函数和友元类的用法。
2 示例代码
2.1 友元函数
友元函数是一个非成员函数,但它被允许访问类的私有和受保护成员。为了声明一个友元函数,需要在类的定义中使用 friend 关键字。
#include <iostream>
class MyClass {
private:
int value;
public:
MyClass(int val) : value(val) {}
// 声明友元函数
friend void displayValue(const MyClass& obj);
};
// 定义友元函数
void displayValue(const MyClass& obj) {
std::cout << "MyClass 的私有成员值为: " << obj.value << std::endl;
}
int main() {
MyClass obj(10);
displayValue(obj); // 输出: MyClass 的私有成员值为: 10
return 0;
}
2.2 友元类
友元类允许一个类访问另一个类的所有私有和受保护成员。为了声明一个友元类,需要在类的定义中使用 friend class 关键字。
#include <iostream>
class MyClass {
private:
int value;
public:
MyClass(int val) : value(val) {}
// 声明友元类
friend class FriendClass;
};
class FriendClass {
public:
void displayValue(const MyClass& obj) {
std::cout << "MyClass 的私有成员值为: " << obj.value << std::endl;
}
};
int main() {
MyClass obj(20);
FriendClass friendObj;
friendObj.displayValue(obj); // 输出: MyClass 的私有成员值为: 20
return 0;
}
3 总结
- 友元函数:允许一个非成员函数访问类的私有和受保护成员。
- 友元类:允许一个类访问另一个类的所有私有和受保护成员。