酒逢知己么么哒,话不投机呵呵呵。
有缘分,就可以任性!
#include "stdafx.h"
#include "string.h"
class CItem{
//只让名为"OutputItem(CItem *pItem)"的这个函数访问自己的私有对象,
//但是如果OutputItem这个函数没有定义,这里也不会报错.
friend void OutputItem(CItem *pItem);
private:
char m_Name[128];
void OutputName()
{
//printf("%s\n",m_Name);
}
public:
void SetItemName(const char* pchData){
if(pchData !=NULL){
strcpy_s(m_Name ,pchData);
}
}
CItem() //定义构造函数
{
memset(m_Name,0,128); //初始化数据成员
}
};
//下面这个函数可以访问
void OutputItem(CItem *pItem){
if(pItem != NULL){
pItem->SetItemName("OWOD");
pItem->OutputName();
//printf("%s\n",pItem->m_Name); //这样也行,不会报错
}
}
// 这个函数不注释就会报错,OutputItem2并不是CItem的友好函数
//void OutputItem2(CItem *pItem){
// if(pItem != NULL){
// pItem->SetItemName("OWOD");
// pItem->OutputName(); //这里会报错,函数已存在,但不可访问
// }
//}
int _tmain(int argc, _TCHAR* argv[])
{
CItem item;
OutputItem(&item); //通过全局函数访问CItem类的私有方法.
return 0;
}