泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。
直接上代码吧:
1.模板函数
#include <iostream>
#include <sstream>
using namespace std;
//这是一个参数是模板的函数,别的类型转成string类型
template<typename t2>
string convrtToString(const t2& other)
{
ostringstream ss;
ss<<other;
return ss.str();
}
void main()
{
//转换
int n = 1000;
string str = convrtToString(n)
system("pause");
}
结果和想的一样,别的类型转化为string类型
2.模板类(可以用来实现很多数据结构...以及单例类什么的)
#include <iostream>
#include <vector>
using namespace std;
template<class T1>
class stack
{
public:
typedef typename std::vector<T1>::iterator iterator;
//重写一个迭代器..
iterator begin() { return m_container.begin(); }
iterator end() { return m_container.end(); }
void push(T1 obj)
{
m_container.push_back(obj);
cout<<"Push Succ"<<endl;
}
void pop()
{
if (m_container.empty())
{
return;
}
else
{
m_container.erase(m_container.begin());
cout<<"Pop Succ"<<endl;
}
};
private:
//偷个懒,哈哈哈
vector<T1> m_container;
};
void main()
{
stack<int> s;
s.push(1);
s.push(2);
stack<int>::iterator it = s.begin();
for (;it != s.end();++it)
{
cout<<*it<<endl;
}
system("pause");
}
上面例子轻松的实现了一个支持迭代器的堆栈数据结构,cocos2dx也通过这样的包装来实现了引擎本身内存管理的引用计数