<span style="font-size:12px;">// FriendForClass.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
class MyClassY; //提前声明
class MyClassZ; //提前声明
class MyClassX
{
friend class MyClassZ;
public:
void print();
void setX(MyClassY &s,int dis);
friend void distance(MyClassX &a,MyClassX &b);/*友元函数*/
private:
int x;
int y;
static int z;
};
int MyClassX::z = 0;//一定要记得赋值
class MyClassY
{
public:
// MyClassX可以访问MyClassY的成员私有或者保护数据
friend void MyClassX::setX(MyClassY &s,int dis);/*友元函数*/
private:
int x;
int y;
};
class MyClassZ
{
public:
// MyClassZ可以访问MyClassX所有成员
void displayFor();/*用于访问MyClassZ的成员*/
private:
int z1;
int z2;
MyClassX X;//需要在这里定义一个对象
};
/*********************************************************/
//MyClassZ可以访问MyclassX必须通过类的对象,间接访问成员
void MyClassZ::displayFor()
{
X.x = 10;
X.z = 10;
MyClassX::z = 10;
}
void MyClassX::setX(MyClassY&s,int dis)
{
s.x = dis;
}
/******************************************************/
//不能直接访问类的成员,必须通过类的对象,间接访问成员
void distance(MyClassX &a,MyClassX &b)
{
int x1 = a.x;
int y1 = b.y;
printf("%d %d",x1,y1);
}
/*********************************/
//成员函数可以直接访问类的成员
void MyClassX::print()
{
printf("%d %d",x,y);
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
</span>原文地址:http://blog.csdn.net/xy010902100449/article/details/44958469