认识C++友元函数
C++友元函数 今天学到一个特别有意思的东西,甚至是C++独有的东西,叫做 友元函数 。类的友元函数是定义在类外部,但有权访问类的所有 私有(private) 成员和 保护(protected) 成员。尽管友元函数的原型有在类的定义中出现过, 但是友元函数并不是成员函数。 友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。 如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend 。C++之所以 特有 友元函数,其实是别的面向对象语言换了个方法叫他,而不是说C++有这样一个新鲜的特性。可以对应到Java的private-package,C#的Internal等。 下面看例子: 如果我有这样一个类 class Pen{ public: Pen(); private: int price = 1500; }; 我在主函数中 int main(){ Pen pilot; cout << pilot.price << endl; } // 编译器会果断报错,因为没有权限访问Pen类的私有成员 那么如果有了今天的主角友元函数 class Pen{ public: Pen(); private: int price = 1500; friend void printPrice(Pen pilot);