C++ friend 用法总结(二)

2015-07-20 18:04:38 · 作者: · 浏览: 11
类都有成员函数作为对方的友元,那么必须第2个类是第一个类的友元
//A.h
#pragma once

// class B is a friend class of A
class A
{
	friend class B;
public:
	A(void):ma(10),mb(20){}
	~A(void){}
	int funa(B& b);
private:
	int	ma;
	int	mb;
};

//B.h
#pragma once
#include "A.h"


// A's function funa is a friend function of B
class B
{
	friend int A::funa(B& b);
public:
	B(void);
	~B(void);
	int funb(A& a);
	int func(A& a);
private:
	int mx;
	int my;
};

//A.cpp
#include "A.h"
#include "B.h"


int A::funa(B& b)
{
	return  b.mx * b.my;
}

//B.cpp
#include "B.h"

B::B(void):mx(12),my(15)
{
}


B::~B(void)
{
}


int B::funb(A& a)
{
	return a.ma + a.mb;
}

int B::func(A& a)
{
	return a.ma * a.mb;
}

//main.cpp
#include "A.h"
#include "B.h"
#include 
                    
                     
using namespace std;
void main()
{
	A a;
	B b;
	cout<