可可西

c++友元函数和友元类

友元不存在权限的概念,原因是友元函数(友元类)并不属于该类的一部分。

friend关键字将一个函数(类)声明在该类之下,只是表明这个函数(类)的内部可以访问该类的私有成员。

美其名曰:友元函数(友元类)。意思就是你是我的好朋友,可以随便拿。

++++++++++++++

class A
{
	friend class B; // B为A的友元类
	friend int add(A& a, int m, int n) // add为A的友元函数
	{
		return a.m_scale*(m+n);
	}

private:
	int m_scale;
public:
	A()
	{
		m_scale= 2;
	}
};

class B
{
public:
	void fun(A& a)
	{
		a.m_scale=3;
	}
};

// 测试代码
int main()
{
	A a;
	int ret1 = add(a,1,2); // ret1=6

	B b;
	b.fun(a);
	int ret2 = add(a,1,2); // ret2=9
	return 0;
}

  

  

posted on 2011-11-20 19:19  可可西  阅读(463)  评论(0编辑  收藏  举报

导航