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;
}