我有以下模板类声明:
template<void f(int)>
class A{
public:
A(){
struct sigaction sigact;
...
if(sigact.sa_handler != f){
...
}
};
}
您能告诉我这种类型的模板是什么吗?此模板有什么好处?声明此类以安装作为f(int)传递的信号处理程序。每当我们创建此类的实例时,都会安装信号处理程序。我了解功能模板和类模板。这个模板是什么?我不知道为什么这样做有什么好处?
模板是参数化类型。在您带来的情况下,名称A
是指一类类型,对于void f(int)
您传递给它的表单的每个功能来说都是一个类型。因此,给出以下声明:
void print_int(int x);
void close_file(int x);
void handle_signal(int x);
A<print_int> p;
A<close_file> c;
A<handle_signal> s;
,和具有不同(但相关)类型的变量p
,c
并且仅当用于实例化模板的功能与所指向的功能不同时,才输入上面突出显示s
的if
块。sigact.sa_handler
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句