Основы программирования на C++. Крыжановская Ю.А. - 17 стр.

UptoLike

Составители: 

17
int* ptr;
int size;
};
void compute2(vec v);
С многомерными массивами все сложнее, но часто можно вместо них
использовать векторы указателей, которые не требуют специального рас-
смотрения. Например:
char* day[] = {"mon", "tue", "wed", "thu", "fri", "sat",
"sun"
};
Если размерность известна на стадии компиляции, то никаких проблем
нет:
void print_m34(int m[3][4])
{
for (int i = 0; i<3; i++) { for (int j="0;" j<4; j++)
cout << " " << m[i][j]; cout << "\n"; } }
Матрица, конечно, все равно передается как указатель, а размерности
используются просто для удобства записи. Первая размерность массива не
имеет отношения к задаче отыскания положения элемента. Поэтому ее мож-
но передавать как параметр.
Как правило, давать разным функциям разные именамысль хорошая,
но когда некоторые функции выполняют одинаковую работу над объектами
разных типов, может быть более удобно дать им одно и то же имя. Использо-
вание одного имени для различных действий над различными типами назы-
вается перегрузкой (overloading). Метод уже используется для основных опе-
раций
C++: у сложения существует только одно имя: +, но его можно приме-
нять для сложения значений целых, плавающих и указательных типов. Эта
идея легко расширяется на обработку операций, определенных пользовате-
лем, то есть, функций. Во избежание случайного повторного использования
имени, имя может использоваться более, чем для одной функции только если
оно сперва
описано как перегруженное. Например:
overload print;
void print(int);
void print(char*);
Для некоторых функций невозможно задать число и тип всех парамет-
ров, которые можно ожидать в вызове. Такую функцию описывают, завершая
список описаний параметров многоточием (...), что означает «и может быть,
еще какие-то параметры». Например:
int printf(char* ...);
Это задает, что в вызове printf должен быть, по меньшей мере, один па-
раметр, char*, а остальные могут быть, а могут и не быть.
Такая функция полагается на информацию, которая недоступна ком-
пилятору при интерпретации ее списка параметров. В случае printf() первым
параметром является строка формата, содержащая специальные последова-
тельности символов, позволяющие printf() правильно обрабатывать
осталь-
          int* ptr;
          int size;
        };
        void compute2(vec v);
     С многомерными массивами все сложнее, но часто можно вместо них
использовать векторы указателей, которые не требуют специального рас-
смотрения. Например:
        char* day[] = {"mon", "tue", "wed", "thu", "fri", "sat",
"sun"
        };
       Если размерность известна на стадии компиляции, то никаких проблем
нет:
     void print_m34(int m[3][4])
      {
        for (int i = 0; i<3; i++) { for (int j="0;" j<4; j++)
cout << " " << m[i][j]; cout << "\n"; } }
      Матрица, конечно, все равно передается как указатель, а размерности
используются просто для удобства записи. Первая размерность массива не
имеет отношения к задаче отыскания положения элемента. Поэтому ее мож-
но передавать как параметр.
      Как правило, давать разным функциям разные имена – мысль хорошая,
но когда некоторые функции выполняют одинаковую работу над объектами
разных типов, может быть более удобно дать им одно и то же имя. Использо-
вание одного имени для различных действий над различными типами назы-
вается перегрузкой (overloading). Метод уже используется для основных опе-
раций C++: у сложения существует только одно имя: +, но его можно приме-
нять для сложения значений целых, плавающих и указательных типов. Эта
идея легко расширяется на обработку операций, определенных пользовате-
лем, то есть, функций. Во избежание случайного повторного использования
имени, имя может использоваться более, чем для одной функции только если
оно сперва описано как перегруженное. Например:
        overload print;
        void print(int);
        void print(char*);
      Для некоторых функций невозможно задать число и тип всех парамет-
ров, которые можно ожидать в вызове. Такую функцию описывают, завершая
список описаний параметров многоточием (...), что означает «и может быть,
еще какие-то параметры». Например:
        int printf(char* ...);
     Это задает, что в вызове printf должен быть, по меньшей мере, один па-
раметр, char*, а остальные могут быть, а могут и не быть.
     Такая функция полагается на информацию, которая недоступна ком-
пилятору при интерпретации ее списка параметров. В случае printf() первым
параметром является строка формата, содержащая специальные последова-
тельности символов, позволяющие printf() правильно обрабатывать осталь-

                                    17