美文网首页
C++ friend关键字

C++ friend关键字

作者: 我阿郑 | 来源:发表于2021-12-24 11:15 被阅读0次
    class Object
    {
    public:
        Object(int v) : value(v)
        {
        }
    private:
        int value;
    };
    
    void Print(Object* p)
    {
        printf("value: %d \n", p->value);
    }
    

    在全局函数Print中无法访问Object对象的私有成员

    friend关键字

    在类A中,用friend关键字可以将一个全局函数声明为该类的“朋友”。也可以将另一个类声明为该类的“朋友”

    class Object
    {
        // 将全局函数Print声明为“朋友”
        friend void Print(Object* p);
    
        // 将类Something声明为“朋友”
        friend class Something;
    };
    

    举例

    class Object
    {
        friend class Something;
          ....
    };
    
    class Something
    {
    public:
       void Print(Object* p)
       {
        printf("value: %d \n", p->value);
       } 
    }
    

    应用场景

    负面作用: friend是不常用的语句,它破坏了访问修饰符的作用,对类的封装够成威胁。

    正面作用: 可能的应用场景:在封装一个模块时,模块中有多个类,那么他们之间可以互相声明为朋友以便操作(他们是一伙的)。
    也就是说,模块内部的类都是朋友,而外部调用者不是朋友、受访问修饰符的限制

    相关文章

      网友评论

          本文标题:C++ friend关键字

          本文链接:https://www.haomeiwen.com/subject/iaxkqrtx.html