Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
52 и до конца.docx
Скачиваний:
2
Добавлен:
26.09.2019
Размер:
67.83 Кб
Скачать

Правила для пропуска значений параметров

Если программа опускает определенный параметр для функции, обеспечивающей значения по умолчанию, то следует опустить и все последующие параметры. Другими словами, вы не можете опускать средний параметр. В случае предыдущей программы, если требовалось опустить значение параметра b в show_parameters, программа также должна была опустить значение параметра с. Вы не можете указать значение для а и с, опуская значение Ь.

Задание значений по умолчанию

Когда вы определяете функцию, C++ позволяет вам указать значения по умолчанию для одного или нескольких параметров. Если программа в дальнейших вызовах этой функции опускает один или несколько параметров, то функция будет использовать для них значения по умолчанию. Чтобы присвоить параметру значение по умолчанию, просто используйте оператор присваивания внутри определения функции. Например, следующая функция payroll указывает значения по умолчанию для параметров hours и rate:

float payroll(int employ_id, float hours = 40, float rate = 5.50)

{

   // операторы }

Когда программа опускает один параметр, она должна опускать все последующие параметры.

Комментарии:

Комментарии - это текстб который игнорируется при интерпритации, что бывает полезно программистам для пояснения тех или иных участков кода. Компилятор обрабатывает комментарии как пустое пространство. Комментарии можно использовать и для временного отключения части кода при отладке.

В C++ есть два типа коментариев.

  • Стандартное комментирование блока /* ... */ как в C

  • Комментирование линии с использованием //

Пример комментария в стиле C:

#include"stdafx.h"

#define asb 100

int main(int argc,char* argv[])

{

/*

printf("Hello C++\n");

return -1;

*/

printf("Hello World!\n");

return 0;

}

То же самое используя новую возможность C++:

#include"stdafx.h"

#define asb 100

int main(int argc,char* argv[])

{

//printf("Hello C++\n");

//return -1;

printf("Hello World!\n");

return 0;

}

Комментарии C можно использовать и в середине строки, а вот комментарии C++ отрезают сроку до конца от места своего появления. Поэтому надо выбирать когда удобно пользовать тот или иной способ.

Ссылки:

Ссылки в C++ должны быть связаны с каким-либо объектом. Таким образом, «нулевые ссылки» (не связанные с каким-либо объектом), в C++ отсутствуют. Разыменование ссылок в C++ не требует специального оператора. Таким образом, в C++ ссылки — форма передачи адреса в стек напрямую, минуя копирование и указатели.

#include <iostream>

using namespace std; // без этой записи нам бы пришлось дописывать "std::" к cout и endl

void square(int x, int &result)

{

result = x*x;

}

int main()

{

int y = 0; //Инициализация

square(3, y);

cout << "y=" << y << endl; //y=9

return 0;

}

Встраиваемые (подставляемые) функции

Некоторые функции в языке C++ можно определить с использованием специального служебного слова inline. Спецификатор позволяет определить функцию как встраиваемую, то есть подставляемую в текст программы в местах обращения к этой функции. Например, следующая функция определена как подставляемая:

inline float module(float x = 0, float у = 0)

{ return sqrt(x * x + у * у); }

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

    Перечислим причины, по которым функция со спецификатором inline будет трактоваться как обычная не подставляемая:

  • встраиваемая функция велика;

  • встраиваемая функция рекурсивна;

  • обращение к встраиваемой функции в программе размещено до ее определения;

  • встраиваемая функция используется в выражении более одного раза;

  • встраиваемая функция содержит цикл, переключатель или оператор перехода.

    Если же для функции со спецификатором inline компилятор не может выполнить подстановку из-за контекста, в который помещено обращение к ней, то функция считается статической (static) и выдается предупреждающее сообщение. Еще одна особенность подставляемых функций - невозможность их изменения без перекомпиляции всех частей программы, в которых эти функции вызываются.

Операция разрешения области видимости:

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]