C++類將函式模板宣告為友元 例項

xuchaoxin1375發表於2020-10-08

//program 18.5.3.cpp  類也可以將 函式模板宣告為友元
#include <iostream>
using namespace std;

class A
{
	int v;
public:
	A(int n) :v(n)
	{
		cout << "A:: theconstructor was called!" << endl;
	}

	template <class T>
	friend void Print(const T& p);//全域性函式模板Print<T>例項化出來的模板函式就可以訪問A類物件引數的私有成員;
};
/*全域性函式模板Print(引數是某個類的物件)*/
template <class T>
void Print(const T& p)
{
	cout <<"p.v="<< p.v<<endl;
}

int main()
{
	A a(4);
	/*呼叫全域性函式模板友例項化的模板函式:此處的函式模板的例項化通過物件a隱式例項化成模板函式Print<const A& p>*/
	Print(a);
	return 0;
}


相關文章