Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования С++ и его «подводные камни».DOC
Скачиваний:
39
Добавлен:
01.05.2014
Размер:
1.02 Mб
Скачать

1.11. Дополнительные операции для доступа к данным

В С++ определены следующие три дополнительные операции:

:: Уточнение области действия

.* Прямое обращение к компоненту класса

->* Косвенное обращение к компоненту класса

Для устранения конфликта имён используется новая операция уточнения области действия – ::. В языке С доступ к глобальной переменной был за­крыт, если локальная и глобальная переменные имели одинаковые имена. В С++ доступ к ней возможен путем применения операции:

int iVariable; // Глобальная переменная void MyFunc ()

{

int iVariable; // Локальная переменная

:: iVariable++; // Увеличиваем значение глобальной переменной

. . .

iVariable—; // Уменьшаем значение локальной переменной

. . .

}

Эта операция может применяться также к статическим (static) компонен­там структур и классов.

Операция прямого обращения к компоненту класса – .* устанавливает ука­затели так, что в результате выполнения операции они указывают на ком­поненты данного класса:

(ptrToObject.*memberFunc)(7); //Вызывает метод memberFunc для объекта,

// на который указывает ptrToObject

Операция косвенного обращения к компоненту класса – ->* устанавливает указатели так, что в результате выполнения операции они указывают на ука­затели компонентов данного класса:

(ptrToObject->*ptrToMemberFunc)(7); // Вызывает метод ptrToMemberFunc для

// обьекта, на который указывает ptrToObject:

1.12. Предопределённые потоки ввода-вывода

В язык С++ включены дополнительные предопределенные потоки. Для терминального и файлового ввода/вывода предусмотрены три стандартных потока: cin, cout и cerr.. Эта возможность позволяет легко настроить опера­ции ввода/вывода в соответствии с требованиями приложения:

. . .

float sm = 0;

cout « "сантиметры = "; // Выводим строку в поток cout cin » sm; // Получаем значение из потока cin

cout « sm « " см соответствуют " « sm / 2.54 « "дюймам";

. . .

В результате выполнения последней строки приведенного фрагмента на эк­ран будет выведена, например, следующая строка:

17.78 см соответствуют 7 дюймам

После того как мы познакомились с усовершенствованиями, внесенными в язык С, можно переходить к фундаментальным новшествам этого мощней­шего и очень удобного языка программирования.

2. Объекты в C++

Самое существенное улучшение по сравнению с языком С касается концепции объектно-ориентированного программирования:

– более четкий контроль структуры программы с целью её декомпозиции;

– возможность создания новых типов данных со своими собственными спе­циали­зи­ро­ван­ными операторами;

– средства для создания повторно используемого кода.

Классы представляют собой первичный механизм, позволяющий реализо­вать скрытие данных, абстракцию данных и наследование – те свойства,которые делают С++ объектно-ориентированным языком.

Классы С++ предусматривают создание расширенной системы предопреде­ленных типов. Каждый тип класса представляет уникальное множество объ­ектов и операций над ними, а также операций, используемых для создания,манипулирования и уничтожения таких объектов. Могут быть объявлены производные классы, наследующие компоненты одного или нескольких ба­зовых (порождающих) классов.