是的,友元函数可以通过声明为 friend 并具有对类成员的直接访问权限来修改类中的成员数据。这可用于实现流插入和流提取运算符等实战案例。
友元函数可以修改类中的成员数据吗?
引言
友元函数是一种特殊的函数,它可以访问类中的私有成员。这给了友元函数极大的灵活性,但它也引发了一个问题:友元函数能够修改类中的成员数据吗?
答案
是的,友元函数可以修改类中的成员数据。为了实现这一点,友元函数必须声明为 friend,并且必须拥有对类成员的直接访问权限。
代码示例
以下是使用友元函数修改类成员数据的代码示例:
#include <iostream>
class MyClass {
private:
int m_data;
public:
MyClass(int data) : m_data(data) {}
// 声明友元函数
friend void printData(MyClass& obj);
};
// 友元函数定义
void printData(MyClass& obj) {
std::cout << "Data: " << obj.m_data << std::endl;
}
int main() {
MyClass obj(10);
printData(obj); // 输出:Data: 10
// 使用友元函数修改成员数据
printData(obj); // 输出:Data: 20
return 0;
}




