当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++类的友元成员

    没有友元之前,一个类是不能直接访问其它类的private成员的
    引进友元机制是允许一个类的private,protected成员的访问权授予给指定的其它函数和其它类

    2.定义
    定义友元的关键字friend
    格式:
    class classname{
    ...
    friend functionname();//声明类的友元函数
    friend class othername();//声明类的友元类

    };

    functionname(){}       //定义友元函数代码细节
    class othername(){};        //定义友元友元类代码细节

    2.1.在类中定义友元函数

    代码举例
    //friend1.cpp pass with vc++6.0 or dev-c++4.9
    #include <iostream>
    class x{
    public:
    x():a(11),b(33){}//构造函数初始化列表
    friend void x_friend_f(x&);
    friend class use_x;
    private:
    int a;
    int b;
    };

    void x_friend_f(x& xx)//x的友元函数实现
    {std::cout<<\"a,b in class x is: \"<<xx.a<<\",\"<<xx.b<<std::endl;}

    int main(){
    x demo;
    x_friend_f(demo);
    return 0;
    }

    .在类中定义友元类
    class screen{
    public:
    ...
     friend class window_msg;//在类中声明一个友元window_msg类
    priavte:
    int height;
    int width;
    int index;
    };

    //在另一类window_msg中直接访问screen类的private成员
    class window_msg{
    public:
    ...
    };
    //友元类可以直接访问
    window_msg& window_msg::relocate(screen::index r,screen::index c,screen& s)
    {
    s.height +=r;
    s.width +=c;
    return *this;
    }

    3.基类与派生类
    友元关系不能被继承,基类的友元对派生类的成员没有任何访问权限
    也就是说如果基类有友类函数和友元类,它们能访问基类任何成员,而不能访问由这个基类继承的派生类的任何成员


    4.设计指导
    类的友元函数又叫做类的非成员函数
    1.何时使用类的成员函数
    当我们对类自身对象进行操作时,操作如赋值=,下标(),调用(),自增++,自减--
    操作的返回结果也在类的自身对象,就直接选择用成员方法实现
    2.何时使用类的非成员函数即友元函数
    当我们对类的两个以上对象进行操作时,如关系运算,输入>>,输出<<,请选用友元函数

相关内容
赞助商链接