C++笔记(类模版)

//模版类中有模版函数偏特化, 有模版泛化, 全特化, 重载
//模版函数调用优先级: 全特化, 特化, 泛化

//泛化
template 
struct TC
{
	TC()
	{
		cout << "TC泛化版本构造函数" << endl;
	}
	void functest1()
	{
		cout << "functest1泛化版本" << endl;
	}

	static int m_stc;  //声明一个静态成员变量
};
template 
int TC::m_stc = 50; //定义静态成员变量, 偏特化

//template <>
int TC::m_stc = 100;//定义为全特化


    template <> //全特化:所有类型模板参数都yoghurt具体类型代表,所以<>里就空了
	struct TC
	{
		TC()
		{
			cout << "TC特化版本构造函数" << endl;
		}
		void functest1();
		{
			cout << "functest1特化版本" << endl;
		}

		void functest2();
		{
			cout << "functest2特化版本" << endl;
		}
	};



//-------------------------
	template 
	struct TC
	{
		TC()
		{
			cout << "TC偏特化版本构造函数" << endl;
		}
		void functest1();
	};
	template 
	void  TC::functest1()
	{
		cout << "TC::functest1偏特化版本" << endl;
	}

	//-------------------------
	template 
	struct TC
	{
		TC()
		{
			cout << "TC偏特化版本构造函数" << endl;
		}
		void functest1();
	};
	template 
	void TC::functest1()
	{
		cout << "TC::functest1偏特化版本" << endl;
	}
///////////////////////////////////////////////////////////////////////////////
//缺省参数(只能在泛化版本中才能有, 特化版本是没有的)
template 
struct TC
{
	TC()
	{
		cout << "TC泛化版本构造函数" << endl;
	}
	void functest1()
	{
		cout << "functest1泛化版本" << endl;
	}

	static int m_stc;  //声明一个静态成员变量
};
    

 

你可能感兴趣的:(C/C++)