C++ 面向对象编程 友元类成员函数

                     C++ 面向对象编程

      类可以声明为另一个类的友元  。。。  成为友元类 
    
       也即是说 如果B是 A 但是友元类, 则 B类所有成员函数都是A 类的友元函数    

       例如下面要实现一个栈的输入和 输出 , 要做的 就是需要两个类, 一个是节点类 , 一个是栈类  栈类 中有两个功能 一个push 一个 pop 函数
 
        下面看代码:

#include<iostream>
using namespace std;

class Node
{
   int data ;
   Node *next;   //指向下一个节点
   public :
       Node(int d )
       {//构造函数
           data = d;
           next = NULL;
       }
       friend class stack ; //友元类
};
class stack
{
    Node *top;
    public :
        //构造函数
        stack()
        {//初始化栈为空
          top = NULL;
        }
        void push(int d )
        {
            Node *p = new Node(d);    //新建一个节点
            if(top != NULL)
            {
                p->next = top;
            }
            top = p;
        }
        int  pop(int &c)
        {//删除栈定文件
            Node *p = top ;
            if(top != NULL)
            {
                c = p->data;
                top = top->next;
                delete p;
                return 1;
            }
            else
               return 0;
        }
};
int main()
{
  //友元类的成员函数可以直接访问对象名直接访问到隐藏的数据
    stack s;
    int c;
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    cout<<"出栈顺序:"<<endl;
    while(s.pop(c))
    {
        cout<<c<<" ";
    }
    cout<<endl;
    return 0;
}



 
wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值