"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу авторанедовольство компилятора, поскольку "abcd" является строкой, а не
int. При вызове pow(2,i) компилятор преобразует 2 к типу float, как того требует функция. Функция pow может быть определена например так: - стр 30 - float pow(float x, int n) { if (n < 0) error("извините, отрицателный показатель для pow()"); switch (n) { case 0: return 1; case 1: return x; default: return x*pow(x,n-1); } } Первая часть определения функции задает имя функции, тип возвращаемого ею значения (если таковое имеется) и типы и имена ее параметров (если они есть). Значение возвращается из функции с помощью оператора return. Разные функции обычно имеют разные имена, но функциям, выполняющим сходные действия над объектами различных типов, иногда лучше дать возможность иметь одинаковые имена. Если типы их выбрать для вызова нужную функцию. Может, например, иметься одна функция возведения в степень для целых переменных и другая для переменных с плавающей точкой: overload pow; int pow(int, int); double pow(double, double); //... x=pow(2,10); y=pow(2.0,10.0); Описание overload pow; сообщает компилятору, что использование имени pow более чем для одной функции является умышленным. Если функция не возвращает значения, то ее следует описать как void: void swap(int* p, int* q) // поменять местами { int t = *p; *p = *q; |
|
|