能否请您举例说明以下陈述
语句1
普通函数只有在签名不同时才有不同的类型.但是,当函数对象的签名相同时,它们可以具有不同的类型.实际上,函数对象定义的每个函数行为都有自己的类型.这是使用模板进行泛型编程的重大改进,因为您可以将功能行为作为模板参数传递
普通函数只有在签名不同时才有不同的类型.
这意味着这些函数具有相同的类型int(int):
int f1(int);
int f2(int);
Run Code Online (Sandbox Code Playgroud)
虽然这有不同的类型 void(int)
void f3(int);
Run Code Online (Sandbox Code Playgroud)
但是,当函数对象的签名相同时,它们可以具有不同的类型.
这意味着这两个类是不同的类型(总是不同的类):
class c1 {int operator()(int);};
class c2 {int operator()(int);};
Run Code Online (Sandbox Code Playgroud)
实际上,函数对象定义的每个函数行为都有自己的类型.
我不确切地知道作者在"功能行为"中的含义,但我认为这只是重述两种类型是不同的类型.
这是使用模板进行泛型编程的重大改进,因为您可以将功能行为作为模板参数传递
这意味着您可以将函数类指定为模板类型参数:
temp<c1> thing_using_c1;
temp<c2> thing_using_c2;
Run Code Online (Sandbox Code Playgroud)
但是你不能用这种方式指定普通函数,你需要以其他方式提供函数:
temp<int(int)> thing_using_f1(f1);
temp<int(int)> thing_using_f2(f2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |