//定义友元类
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CItem
{
private:
char m_Name[128];
void OutputName()
{
cout<<m_Name<<endl;
}
public:
friend class CList; //将CList作为友元
void SetItemName(const char* pchData)
{
if(pchData!=NULL)
{
strcpy(m_Name,pchData);
}
}
CItem() //构造
{
memset(m_Name,0,128); //初始化数据成员
}
};
class CList
{
private:
CItem m_Item;
public:
void OutputItem();
};
void CList::OutputItem()
{
m_Item.SetItemName("BeiJing");
m_Item.OutputName();
}
=======
//定义友元类
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CItem; //前导声明CItem类
class CList
{
private:
CItem *m_pItem;
public:
CList();
~CList();
void OutputItem();
};
class CItem
{
friend void CList::OutputItem(); //声明友元函数
private:
char m_Name[128];
void OutputItem()
{
cout<<m_Name<<endl;
}
public:
void SetItemName(const char* pchData)
{
if(pchData!=NULL)
{
strcpy(m_Name,pchData);
}
}
CItem()
{
memset(m_Name,0,128);
}
};
void CList::OutputItem()
{
m_pItem->SetItemName("BeiJing");
m_pItem->OutputItem(); //在友元函数中访问CItem类的私有方法
OutputName
}
CList::CList()
{
m_pItem=new CItem();
}
CList::~CList()
{
delete m_pItem;
m_pItem = NULL;
}
int main()
{
CList list;
list.OutputItem();
return 0;
}
=====
//也可以将全局函数定义为友元
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CItem
{
friend void OutputItem(CItem *PItem); //全局函数OutputItem定义
为友元函数
private:
char m_Name[128];
void OutputItem()
{
cout<<m_Name<<endl;
}
public:
void SetItemName(const char* pchData)
{
if(pchData!=NULL)
{
strcpy(m_Name,pchData);
}
}
CItem()
{
memset(m_Name,0,128);
}
};
void OutputItem(CItem *pItem) //定义全局函数
{
if(pItem!=NULL)
{
pItem->SetItemName("同一个世界,同一个梦想");
pItem->OutputItem();
}
}
int main()
{
CItem Item;
OutputItem(&Item);
return 0;
}
==========