您的位置:首页 > 编程语言 > C语言/C++

C++ 模板练习1

2015-06-14 11:44 260 查看
//特定的模板友元关系
#include "stdafx.h"
#include <iostream>
using namespace std;

template<class T>class MyClass1;
template<class T>T Get( const T&);

template<class T>
class MyClass
{
public:
MyClass(){};
~MyClass(){};
friend class MyClass1<int>;
friend int Get<int>( const int&);

private:
static T a;
};
int MyClass<int>::a = 10;

template<class T>
class MyClass1
{
public:
MyClass1();
~MyClass1();
T Get();
private:
};

template<>
MyClass1<int>::MyClass1()
{
}

template<>
MyClass1<int>::~MyClass1()
{
}

template<>
int MyClass1<int>::Get()
{
MyClass<int> (mc);
return mc.a;
}

template<class T>
int Get( const int&nNum)
{
MyClass<int> (mc);
return mc.a + nNum;
}

int _tmain(int argc, _TCHAR* argv[])
{
int n = Get<int>(123);
cout<<n<<endl;

MyClass1<int>(mc1);
n = mc1.Get();
cout<<n<<endl;
return 0;
}

//
#include "stdafx.h"
#include <iostream>
using namespace std;

template<class T>class MyClass1;
template<class T>T Get(const T&);

template<class T>
class MyClass
{
public:
MyClass();
~MyClass();
friend class MyClass1<int>;
friend T Get<>(const T&);

private:
const static int i = 10;
};

MyClass<int>::MyClass()
{
}

MyClass<int>::~MyClass()
{
}

template<class T>
int Get<>(const int &a)
{
MyClass<int> (mc);
return a + mc.i;
}

template<class T>
class MyClass1
{
public:
MyClass1();
~MyClass1();
int Get();
private:

};

MyClass1<int>::MyClass1()
{
}

MyClass1<int>::~MyClass1()
{
}

int MyClass1<int>::Get()
{
MyClass<int>(mc);
return mc.i;
}

int _tmain(int argc, _TCHAR* argv[])
{
int n = Get<int>(123);
cout<<n<<endl;

MyClass1<int>(mc);
n = mc.Get();
cout<<n<<endl;
return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: