友元函数 C++

#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.友元关系不能继承,基类的友元对派生类的成员没有特殊的访问权限。如果基类被授予友元关系,则只有基类具有特殊的访问权限。该基类的派生类不能访问授予友元关系的类。

posted on 2014-05-20 14:46  berkeleysong  阅读(203)  评论(0编辑  收藏  举报

导航