C++中的友元机制

    C++中的友元机制(friend),可以不通过调用成员函数便能直接访问类的私有数据。友元可以是函数(友元函数),也可以是类(友元类)。

    一、友元函数

        1.声明:在类体内,在函数类型前要加关键字friend;

        2.定义:在类体外,格式与普通函数一样;

        3.特点:(1)友元函数为非成员函数,调用上与普通函数一样;

                        (2)可直接访问该类中私有成员。

    二、友元类

        当声明一个类为另一个类的友元时,友元类中的所有成员函数都是另一个类的友元函数。


    通过下面的代码例子,就会更明白了。

#include<iostream>
using namespace std;

class X
{
public:
    friend class Y;     //类Y是类X的友元类
    void set(int i)
    {
        x = i;
    }
    void display()
    {
        cout << "x=" << x << ";" << "y:" << y <<endl;
    }
private:
    int x;
    static int y;
};

class Y
{
public:
    Y(int i,int j);
    void display();
private:
    X a;    //数据成员为类X的对象
};

int X::y = 10;
Y::Y(int i,int j)
{
    a.x = i;
    X::y = j;
}

void Y::display()
{
    cout << "x=" << a.x << "," << "y=" << X::y <<endl;
}

int main()
{
    X b;
    b.set(5);
    b.display();
    Y c(6,9);
    c.display();
    b.display();

    return 0;
}

    运行结果为:

            


    注意:友元机制的作用主要是为了提高程序的运行效率和方便编程。但同时友元破坏了类的封装性,所以使用时慎重。

猜你喜欢

转载自blog.csdn.net/buknow/article/details/80317280