C++ 友元函数应用:运算符重载非成员函数访问私有数据跨多个类的交互打破封装性(有意识允许)优势:更灵活,提高重用性更高效,代码更简洁组织更好,易读易写更好的封装性,非成员函数不会直接修改类
C++ 友元函数的应用场景和优势
概述
友元函数是 C++ 中特殊函数,它可以访问和修改类或结构的私有成员,即使该函数不是该类或结构的成员函数。友元函数在某些场景中非常有用。
应用场景
以下是一些友元函数的常见应用场景:
优势
使用友元函数具有以下优势:
实战案例:输出日期
考虑我们想要创建一个 Date
类来表示日期,并希望重载 cout
运算符来直接输出日期。以下是使用友元函数实现该操作的示例代码:
// Date 类 class Date { private: int day, month, year; public: Date(int d, int m, int y) : day(d), month(m), year(y) {} }; // 友元函数重载 cout 运算符 friend ostream& operator<<(ostream& os, const Date& date) { os << date.day << "-" << date.month << "-" << date.year; return os; } int main() { Date date(10, 11, 2022); cout << date << endl; // 输出 10-11-2022 }
在这个例子中,operator<<
友元函数允许我们使用 <<
运算符直接输出 Date
对象,实现了定制化的日期输出功能。