平时用C C#? Java类的语言用的多些? ?, 现在弄弄C++的
一些高级语言都有泛型? 比如C#? List<类型>? 这样的用法非常方便好用
类似的C++里面有模版? 不过语法看起来就没那么美丽了
主要是实现:
1.方法的模版
? ? 不同类型,功能相同的使用
2.类的模版? ??
? ? 不同类型,类功能类似的使用
注意点:
? ?a? ? template <typename T , typename T1> 先定义下模版有那几个参数
? ?b? ? 对于类,如何为定义在外面的函数书写模版
? ?c? ? 就是使用了,与其它高级语言类似
#include <iostream>
//定义模版 其实就是类型不清楚 用的时候指明下, 编译器编译的时候会根据指明的类型 生成不同的实际函数调用
template <typename T , typename T1>
T add( T a, T1 b)
{
return a + b;
}
//--------------------------------------------------------
template <typename T>
class MyClass
{
T i;
public:
MyClass():i(1.1){};
T GetI() { return i; };
private:
};
//......................................................
//函数写到外面
template <typename T>
class MyClass2
{
T m;
public:
MyClass2(T value);
T Getm();
private:
};
template <typename T>
MyClass2<T>::MyClass2(T value)
{
m = value;
}
template <typename T>
T MyClass2<T>::Getm()
{
return m;
}
int main()
{
MyClass<float> *pcls = new MyClass<float>();
MyClass2<double> *pcls2 = new MyClass2<double>(3.5);
std::cout<<pcls->GetI()<<"\n";
std::cout << pcls2->Getm() << "\n";
//指明类型
std::cout << add<float,float>(1.0,2.1)<< "Hello World!\n";
}
运行结果:
1.1 3.5 3.1Hello World!
老铁们可以把试用过程中的类型修改成int 之类的 ,看输出结果对比就知道怎么用了 ?
|