zoukankan      html  css  js  c++  java
  • C++ 友元类,友元函数

    //友元函数  友元类
    #include<iostream>
    using namespace std;
    
    
    
    class PointB
    {
    public:
        friend class PointC;
        //类PointC是类PointB的友元类--意味着类PointC对象可以调用PointB中所有的成员
        void Test(){
            ;
        }
    private:
        int x;
        int y;
    };
    
    class PointC
    {
    public:
        void printfPointB(){
            //调用其友元类的私有属性
            cout << pb.y << endl;
            //调用PointB的成员函数
            pb.Test();
        }
    private:
        PointB pb;
    };
    
    
    class PointA
    {
    public:
        //友元函数
        friend void Friendfun(PointA* pin);
        int GetA(){
            return a;
        }
        int GetB(){
            return b;
        }
    private:
        int a;
        int b;
    };
    
    //friend 关系户
    //const(C语言)冒牌货
    //register cpu身边的小太监(寄存器)
    //typedef 混号王(起别名)
    
    
    //友元函数
    //友元必须有一个参数,就是友元函数所在类的对象指针(不然无法访问对象的私有属性)
    //友元函数是一个全局函数
    //友元函数破坏类的封装性
    void Friendfun(PointA* pin){
        //可以直接访问类的私有成员
        pin->a = 10;
        pin->b = 20;
    }
    
    
    void protectA(){
        PointA *p1 = new PointA();
        Friendfun(p1);
        cout << "a=" << p1->GetA() << ";b=" << p1->GetB() << endl;
        if (p1!=NULL)
        {
            delete p1;
        }
    }
    
    void main(){
        protectA();
        system("pause");
    }
  • 相关阅读:
    第04组(64) 团队展示
    结对编程作业
    第一次个人编程作业
    寒假第二份大礼包
    热身礼包初体验,欢欢喜喜过大年
    第08组 Beta冲刺 (1/5)
    第08组 Alpha冲刺 总结
    第五次作业
    第08组 Alpha冲刺 (6/6)
    第08组 Alpha冲刺 (5/6)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5613199.html
Copyright © 2011-2022 走看看