c++++ 友元函数应用:运算符重载非成员函数访问私有数据跨多个类的交互打破封装性(有意识允许)优势:更灵活,提高重用性更高效,代码更简洁组织更好,易读易写更好的封装性,非成员函数不会直接修改类
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
以上就是C++ 友元函数的应用场景和优势有哪些的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系 yyfuon@163.com