有一个类,类中有一个数据成员,外面有两个函数,只想让一个函数可以访问这个数据成员
class MyClass {
private:
int value;
public:
MyClass(int num) : value(num) {}
friend void friendFunction(const MyClass& obj);
};
void friendFunction(const MyClass& obj) {
std::cout << "The value of MyClass is: " << obj.value << std::endl;
}
void Function(const MyClass& obj) {
std::cout << "The value of MyClass is: " << obj.value << std::endl;
}
int main() {
MyClass obj(42);
friendFunction(obj); // 调用友元函数
Function(obj); // 调用错误,不是友元函数
return 0;
}
注意:
class FriendClass {
public:
void showValue(const MyClass& obj) {
std::cout << "The value of MyClass is: " << obj.value << std::endl;
}
};
class MyClass {
private:
int value;
friend class FriendClass; // 声明FriendClass为友元类
public:
MyClass(int num) : value(num) {}
};
int main() {
MyClass obj(42);
FriendClass fc;
fc.showValue(obj); // 通过友元类调用私有成员
return 0;
}
注意: