谁能解释一下C++中的模板究竟是怎么会回事 谁能解释一下C++中的模板究竟是怎么会回事 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 和函数模板一样比如 template <type T>print( T a){ cout<<a<<endl;};因为cout支持任何数据类型的输出,所以可以避免些 print(int) print(long) print(double) 等函数了看看下面的代码//感受C++模板变成#include <iostream>template <class T, void (T::*SF)(), void (T::*EF)()>class AutoRunner { public: AutoRunner (T &instance) : m_instance(instance) { (m_instance.*SF)();} ~AutoRunner () { (m_instance.*EF)();} private: T &m_instance; };class MyClass { public: MyClass (long value) : m_value(value) {} void FirstMethod() { std::cout << " FirstMethod, value is " << m_value << std::endl;} void LastMethod () { std::cout << " LastMethod , value is " << m_value << std::endl;} private: long m_value; };typedef AutoRunner<MyClass,&MyClass::FirstMethod,&MyClass::LastMethod> MyClassAuto;int main(){std::cout << "In beginning of main" << std::endl;MyClass myInstance(1);MyClass myInstance2(2); { MyClassAuto myClassAuto(myInstance); std::cout << " In sub block" << std::endl; } { MyClassAuto myClassAuto(myInstance2); std::cout << " In sub block" << std::endl; }std::cout << "At end of main" << std::endl;return 0;} 如何由一个Combox事件引起另一个Combox控件内容动态更新? 使用WinIo获取CPU温度 全方位的群招人 关于'' 和"" 的区别请教各位 弱弱的问:怎样修改标题栏的图标? 如何在控制台调用CL编译CPP文件。老大指点一下,50分相送 ■■[调查]您用Linux搞开发了吗?请大家帮忙UP! 提供VC6的类库大全的电子版! 请问谁有全文检索算法的源码 VS2010修改应用程序外观 关于搜索文件 关于CFile的读写方式
比如
template <type T>
print( T a)
{
cout<<a<<endl;
};
因为cout支持任何数据类型的输出,所以可以避免些 print(int) print(long) print(double) 等函数了看看下面的代码//感受C++模板变成
#include <iostream>template <class T, void (T::*SF)(), void (T::*EF)()>
class AutoRunner
{
public:
AutoRunner (T &instance) : m_instance(instance) { (m_instance.*SF)();}
~AutoRunner () { (m_instance.*EF)();}
private:
T &m_instance;
};class MyClass
{
public:
MyClass (long value) : m_value(value) {}
void FirstMethod() { std::cout << " FirstMethod, value is " << m_value << std::endl;}
void LastMethod () { std::cout << " LastMethod , value is " << m_value << std::endl;}
private:
long m_value;
};typedef AutoRunner<MyClass,&MyClass::FirstMethod,&MyClass::LastMethod> MyClassAuto;int main()
{
std::cout << "In beginning of main" << std::endl;MyClass myInstance(1);
MyClass myInstance2(2);
{
MyClassAuto myClassAuto(myInstance);
std::cout << " In sub block" << std::endl;
}
{
MyClassAuto myClassAuto(myInstance2);
std::cout << " In sub block" << std::endl;
}std::cout << "At end of main" << std::endl;return 0;
}