#include<iostream> #include<vector> using namespace std; class Text{ public: Text():a(1){} private: int a; void display(){ cout<< "hello world"<<endl;} friend void f(Text t); }; void f(Text t)///可以用引用,也可以不用,不用前面加类,要有类参数,不然鬼才知道他要哪一个 { cout<<t.a<<endl; t.a = 2;///友元可以改变值 cout<<t.a<<endl; t.display();///有缘可以引用函数 } void main() { Text t; f(t); }
1.友元可以访问类的私有成员。
2.只能出现在类定义内部,友元声明可以在类中的任何地方,一般放在类定义的开始或结尾。
3.友元可以是普通的非成员函数,或前面定义的其他类的成员函数,或整个类。
4.类必须将重载函数集中每一个希望设为友元的函数都声明为友元。
5.友元关系不能继承,基类的友元对派生类的成员没有特殊的访问权限。如果基类被授予友元关系,则只有基类具有特殊的访问权限。该基类的派生类不能访问授予友元关系的类。
原文:http://www.cnblogs.com/berkeleysong/p/3738937.html