Обрабатывая вызов функции в пр

Автор admin Понедельник, 18 мая 2009 11:32

Обрабатывая вызов функции в программе, компилятор должен решить, шаблон или обычная функция «лучше всего» подходит для данного вызова. Давайте добавим к уже рассматривавшемуся шаблону функции min() несколько обычных функций: //: C05:MinTest.cpp #include #incl ude using std using std using std strcmp: cout; endl; tempiate const T& min(const T& a. const T& b) { return (a < b) ? a : b; } const char* min(const char* a. const char* b) { return (strcmp(a. b) < 0) ? a ; b: } double min(double x. double y) { return (x < y) ? x : y; } int mainO { const char *s2 = "say \"Ni-!\"". *sl = "knights who": cout « mind. 2) « endl: // 1: 1 (шаблон) cout « mind.O. 2.0) « endl: // 2: 1 (double) cout « mind. 2.0) « endl: // 3: 1 (double) cout « min(sl. s2) « endl: // 4: knights who (const char*) cout « min<>(sl. s2) « endl: // 5: say “Ni-!” // (шаблон) } ///:- Помимо шаблона функции в этой программе определяются две нешаблонные функции: версия min() для строк С и для double. Если бы шаблона не было, то для первой строки была бы вызвана double-версия min(), так как суще


Комментарии закрыты.