
- •Поддержка модульности. Функции, параметры, передача параметров. Область видимости и область существования. Встроенные и собственные типы данных. Структура программы.
- •Директивы препроцессора. Имена. Объявление констант и переменных. Оператор присваивания.
- •3. Условные операторы. Операторы циклов. Операторы: break, continue. Инкрементные и декрементные операторы. Арифметические операции, в том числе целочисленные. Выражения и порядок вычисления.
- •Цикл for
- •Цикл while
- •Оператор continue
- •Операции увеличения (инкремента) и уменьшения (декремента)
- •Порядок вычислений
- •4. Объявление функций, оператор return. Передача параметров. Параметры по умолчанию.
- •5. Встроенные типы данных и операции над ними. Тип void. Перечисления.
- •Int float double char bool – встроенные типы данных
- •6. Указатели и действия над ними.
- •7. Явные и неявные преобразования типа. Составные типы данных и действия над ними.
- •8. Класс памяти и модификатор const.
- •9. Работа с динамической памятью. Назначение динамического выделения памяти. Операторы new и delete. Время жизни динамических объектов.
- •3) Операторы new и delete.
- •10. Inline – функции, шаблоны и перегрузка имен. Роль inline – функций и шаблонов. Объявление inline – функций и шаблонов. Ограничения связанные с inline – функциями.
- •Inline-функции
- •11. Перегрузка имен функций и понятие сигнатуры.
9. Работа с динамической памятью. Назначение динамического выделения памяти. Операторы new и delete. Время жизни динамических объектов.
Динамическая память это как раз таки и есть new и delete. С помощью оператора New выделяем память.
3) Операторы new и delete.
Оператор delete возвращает память, выделенную оператором new (разбивает память). Вызов delete должен происходить для каждого вызова new, чтобы избежать утечки памяти. После вызова delete объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться.
Фрагмент кода в качестве примера:
int *p_var = NULL; // объявление нового указателя
p_var = new int; // память динамически выделяется
/* .......
остальной код
........*/
delete p_var; // память освобождается
p_var = NULL; // указатель заменяется на 0 (нуль-указатель)
Массивы, созданные (выделенные) при помощи new [], аналогичным образом могут быть уничтожены (оcвобождены) при помощи delete []:
int size = 10;
int *p_var = NULL; // объявление нового указателя
p_var = new int [size];// память динамически выделяется
/* .......
остальной код
........*/
delete [] p_var; // память освобождается
p_var = NULL; // указатель заменяется на 0 (нуль-указатель)
Вызов delete[] для массива объектов приведет к вызову деструктора для каждого объекта перед освобождением памяти, выделенной под массив.
Время жизни динамических объектов.
Они живут до тех пор пока программа работает, либо до оператора delete.
int _tmain(int argc, _TCHAR* argv[])
{setlocale( LC_ALL,"rus");
int n;
cout<<"Введите размерность:"<<"\n";
cin>>n;
int *a = new int [n,n];
int i,j,num,max;
srand(time(0));
num=0;
max=0;
for (i=0;i<n;i++){
for(j=0;j<n;j++){
num++;
a[i,j]=num*rand()%100;
if (max < a[i,j]) max=a[i,j];
cout<<a[i,j]<<" ";
}
cout<<endl;
}
cout<<"Максимальный элемент = "<<max<<" ";
}
10. Inline – функции, шаблоны и перегрузка имен. Роль inline – функций и шаблонов. Объявление inline – функций и шаблонов. Ограничения связанные с inline – функциями.
Inline-функции
inline функция даёт компилятору сделать функцию встраиваемой
inline double sqr(double a){
return a*a;
}
Перегрузка имен.
Int min(int a, int b) {…}
Double min(double a, double b) {…}
ДОЛЖНА БЫТЬ РАЗНАЯ СИГГНАТУРА. Тогда это будет перегрузка. если разные типы параметров происходит перегрузка.
Шаблоны
шаблоны необходимы для того чтобы не переписывать функцию или класс, позволяют создать параметризованную функцию или класс. Хотя шаблоны предоставляют краткую форму записи участка кода, на самом деле их использование не сокращает исполнимый код, так как для каждого набора параметров компилятор создаёт отдельный экземпляр функции или класса.
Роль inline – функций и шаблонов. Увеличить производительность программ.
Объявление inline – функций и шаблонов.
Шаблон
template <typename T> T Abs (T N)
{
return N < 0 ? -N : N;
}
template <typename T> T Max (T A, T B)
{
return A > B ? A : B;
}
Ограничения связанные с inline – функциями.