C++ Template的使用

引言

templet是什么?英语里是这样的:

n.=templet,样板,模板,型板 - 360翻译

当然,c++里不一样~~(更难)~~

正文

函数

先从函数讲起
有人可能无聊写过这种函数

void print1(int a)
{
	cout<<a;
}

void print2(char a)
{
	cout<<a;
}

void print3(string a)
{
	cout<<a;
}

写了三次,太麻烦了。这是我们的Template就要登场了

template<typename T> void print(T a)
{
	cout<<a;
}

int main()
{
	print(1);
	print(1.1);
	print("Hello Template");
}

一个函数解决所有问题so nice
当然你如果真的无聊可以手动控制类型

template<typename T> void print(T a)
{
	cout<<a;
}

int main()
{
	print<int>(1);
}

当然这个功能不是为了无聊的人发明的,它可以控制返回类型

template<typename T1> T1 print(int a)
{
	return T1(a);
}

int main()
{
	cout<<print<char>(65);
}
//输出:A

神不神奇?
当然,只有函数是不行的,还有类

template <class T> class A{
    public:
        T print(int a)
		{
			return T(a);
		}
};
int main()
{
	A<char> testclass;
	cout<<testclass.print(65);
}//和上一个代码作用一样

template 可以放在类的定义上,也可以放在成员函数上

 class A{
    public:
        template<typename T1> T1 print(int a)
		{
			return T1(a);
		}
};
int main()
{
	A testclass;
	cout<<testclass.print<char>(65);
}

你也可以在类和成员函数上定义

template <class T> class A{
    public:
        template<typename T1> viod print(int a)
		{
			cout<<t(a)<<' '<<T1(a);
		}
};
int main()
{
	A<int> testclass;
	testclass.print<char>(65.0);
}

刺不刺激?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fesdab/article/details/106966270
————————————————

你可能感兴趣的:(c++)