C++ 模板练习1
//特定的模板友元关系 #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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。