Язык программирования C++. Вводный курс


Инструкции объявления


В С++ определение объекта,  например

int ival;

рассматривается как инструкция объявления (хотя в данном случае более правильно было бы сказать определения). Ее можно использовать в любом месте программы, где разрешено употреблять инструкции. В следующем примере объявления помечены комментарием //#n, где n– порядковый номер.

#include <fstream>

#include <string>

#include <vector>

int main()

{

    string fileName; // #1

 

    cout << "Введите имя файла: ";

    cin >> fileName;

 

    if ( fileName.empty() ) {

        // странный случай

        cerr << "Пустое имя файла. Завершение работы.\n";

        return -1;

    }

 

    ifstream inFile( fileName.c_str() ); // #2

        if ( ! inFile ) {

        cerr << "Невозможно открыть файл.\n";

        return -2;

    }

 

    string inBuf;          // #3

    vector< string > text; // #4

    while ( inFile >> inBuf ) {

        for ( int ix = 0; ix < inBuf .size(); ++ix ) // #5

            // можно обойтись без ch,

            // но мы использовали его для иллюстрации

            if (( char ch = inBuf[ix] )=='.'){ // #6

                 ch = '_';

                 inBuf[ix] = ch;

            }

        text.push_back( inBuf );

    }

 

    if ( text.empty() )

        return 0;

    // одна инструкция объявления,

    // определяющая сразу два объекта

    vector<string>::iterator iter = text.begin(), // #7

                             iend = text.end();

 

    while ( iter != -iend ) {

        cout << *iter << '\n';

        ++iter;

    }

    return 0;

}

Программа содержит семь инструкций объявления и восемь определений объектов. Объявления действуют локально; переменная объявляется непосредственно перед первым использованием объекта.

В 70-е годы философия программирования уделяла особое внимание тому, чтобы определения всех объектов находились в начале программы или блока, перед исполняемыми инструкциями. (В С, например, определение переменной не является инструкцией и обязано располагаться в начале блока.) В некотором смысле это была реакция на идиому использования переменных без предварительного объявления, чреватую ошибками. Такую идиому поддерживал, например, FORTRAN.




Начало  Назад  Вперед



Книжный магазин