1、友元的作用:
(1)友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行了数据共享的机制;
2、友元的优点和缺点
优点:提高程序的运行效率;
缺点:破坏了类的封装性和数据隐藏性,导致程序的可维护性变差;
3、特点:
(1)友元函数是可以直接访问类的私有成员的非成员函数;
(2)友元函数是定义在类外的普通函数,它不属于任何类;
(3) 一个函数可以是多个类的友元函数;
4、使用场景
(1)运算符重载的某些情况会使用友元;
(2) 两个类要共享数据的时候;
#include "pch.h" #include <iostream> using namespace std; class Person { private: double dbHeight; int nAge; public: Person(double dbHeight, int nAge); void show(); friend void setAge(Person &p); }; Person::Person(double dbHeight, int nAge) { this->dbHeight = dbHeight; this->nAge = nAge; } void Person::show() { cout << "身高:" << dbHeight << endl; cout << "年龄:" << nAge << endl; } void setAge(Person &p)//非成员函数设置为友元函数,修改数据成员的值 { p.nAge = 10; } int main() { Person person1(180,18); setAge(person1); person1.show(); }