- •Объекты и классы
- •2.1. Основные принципы ооп
- •2.3.1. Комментарии
- •2.3.2. Операторы объявления переменных
- •2.3.3. Операция расширения области видимости
- •2.3.4. Встроенные функции
- •2.3.5. Стандартные параметры функции
- •2.3.6. Ссылки
- •2.3.7. Ссылки и функции
- •2.3.8. Константы
- •2.3.9. Перегруженные функции
- •2.3.10. Операторы new и delete
2.3.1. Комментарии
Наряду со стандартными ограничителями комментария (/* и */) в программе C++ можно задать комментарий-строку двумя символами //. Все символы, следующие за символами // до конца строки, являются частью комментария и пропускаются компилятором.
void main () // это комментарий-строка
{
/* по-прежнему можно пользоваться традиционными ограничителями комментариев, удобными для задания комментария, занимающего более одной строки ... */
// операторы ...
}
2.3.2. Операторы объявления переменных
В языке С локальная переменная (т.е. переменная, определенная внутри функции) должна объявляться в начале блока перед другими операторами программы. Однако в языке C++ объявление локальной переменной рассматривается как обычный оператор программы, следовательно, объявление можно поместить в любом месте программы перед первой ссылкой на переменную.
Примечание
Блок – фрагмент кода, ограниченный символами { и }. На переменную, определенную внутри блока, можно ссылаться только внутри этого или внутри вложенного блоков (если она не скрыта переменной с таким же именем внутри вложенного блока). Таким образом, блок определяет область видимости переменной.
В языке C++ код можно сделать более легким для чтения и сопровождения, помещая определение переменной непосредственно перед кодом, который ее использует, например:
void main()
{
// другие операторы ,..
int Count =0;
while (++Count <= 100)
{
// операторы цикла ...
}
// другие операторы ...
}
Переменную можно объявить даже внутри цикла for.
// другие операторы …
for (int i = 0; i < MAXLINES; ++i)
{
// другие операторы ...
int Length = GetLineLength (i);
if (Length = 0) break;
// другие операторы ...
}
if (i < MAXLINES)
// встретилась строка длиной О
В приведенном коде считается, что объявление счетчика цикла i встречается за пределами блока, следующего непосредственно за оператором for. Следовательно, ссылаться на переменную счетчика можно и после блока for, а переменная Length, объявленная внутри блока for, доступна только внутри этого блока.
Если объявление включает инициализацию, элемент данных инициализируется при выполнении оператора объявления. Так, в приведенном примере переменная i создается и инициализируется однократно, когда программное управление достигает оператора for; а переменная Length создается и инициализируется на каждой итерации цикла for.
Примечание
Если локальная переменная объявлена как статическая (ключевое слово static), то она создается и инициализируется только один раз, когда программное управление впервые достигает оператора объявления переменной.
Обратите внимание: если объявление переменной содержит инициализацию, то необходимо убедиться, не пропущен ли оператор объявления, как в следующей конструкции switch, компиляция которой вызывает сообщение об ошибке.
switch (Code)
{
case 1:
// ...
break;
case 2:
int Count =0; // ошибка
// ...
break;
case 3:
// ...
break;
}
Компилятор генерирует ошибку по следующей причине: переменная Count инициализируется только тогда, когда управление достигает ветви case 2 оператора switch. Если управление передается ветви case 3, содержащей обращение к переменной Count, то она не будет инициализирована. Ветвь case 3 имеет доступ к переменной Count, так как объявление переменной предшествует данной ветви внутри того же блока. Компилятор сгенерирует ошибку, даже если код в этой ветви действительно не использует переменную Count. Важен факт, что использование возможно. Для исправления ошибки нужно поместить код ветви case 2 внутри ее собственного блока, например:
case 2:
{
int Count = 0;
// ...
break;
}
В таком варианте оператора switch ссылаться на переменную Count можно только внутри ветви case 2. В противном случае можно убрать инициализацию из объявления и присвоить переменной Count начальное значение.
case 2:
int Count;
Count = 0;
// ...
break;