2015-05-22 3 views
-4

Не могли бы вы объяснить следующие высказывания с примеромC++ функторы объяснение

заявлении1

Обычных функций имеют различные типы только тогда, когда их сигнатуры отличаются. Однако объектные объекты могут иметь разные типы , когда их подписи одинаковы. Фактически, каждое функциональное поведение , определенное функциональным объектом, имеет свой собственный тип. Это значительное улучшение для общего программирования с использованием шаблонов, потому что вы можете передать функциональное поведение в качестве параметра шаблона

+1

Что вы понимаете? Какие исследования вы сделали? Откуда взялось заявление, а где другие заявления? – Useless

+0

Необходим дополнительный контекст. –

ответ

5

Обычных функций имеют различные типы только тогда, когда их сигнатуры отличаются.

Это означает, что эти функции оба имеют один и тот же тип int(int):

int f1(int); 
int f2(int); 

в то время как это имеет другой тип void(int)

void f3(int); 

Однако функциональные объекты могут иметь различные типы, когда их подписи одинаковы.

Это означает, что эти два класса различных типов (различные классы всегда есть):

class c1 {int operator()(int);}; 
class c2 {int operator()(int);}; 

В самом деле, каждое функциональное поведение определяется объектом функции имеет свой собственный тип.

Я не знаю точно, что автор означает «функциональное поведение», но я думаю, что это просто повторение того, что два типа классов являются отдельными типами.

Это значительное улучшение для общего программирования с использованием шаблонов, потому что вы можете передать функциональное поведение в качестве параметра шаблона

означает, что вы можете указать функцию класса в качестве параметра типа шаблона:

temp<c1> thing_using_c1; 
temp<c2> thing_using_c2; 

Но вы не можете указать обычную функцию таким образом, вам нужно будет выполнить функцию по-другому:

temp<int(int)> thing_using_f1(f1); 
temp<int(int)> thing_using_f2(f2); 
-1

разные классы могут иметь разные функции с одинаковым именем и параметрами. но в целом неклассические функции, которые не возможны

Смежные вопросы