?:: доступ к объекту-владельцу данного объекта, классу-владельцу данного члена или разрешение области видимости. Доступ к объекту-владельцу данного объекта для динамических объектов или к классу-владельцу для статических объектов будет рассматриваться позже.
?.* – разыменование указателя на член класса.
? – >* – разыменование указателя на указатель члена класса.
? const_cast – добавляет или удаляет из имени указателя модификатор const, когда указатель, имеющий такой модификатор, надо передать в качестве аргумента функции.
? dynamic_cast – во время выполнения программы проверяет, может ли быть указатель приведен к определенному типу или выполняет такое приведение.
? reinterpret_cast – преобразует типизированный указатель в указатель на пустой тип и обратно.
? static_cast – преобразует любой тип, известный на момент компиляции в любой другой тип, также полностью известный на момент компиляции. В том случае, если преобразование может быть выполнено другими средствами языка (например, приведение типа intк типу double), результат применения static_cast будет тем же самым.
? typeid – получает идентификатор времени исполнения для любого выражения-операнда.
? new – осуществляет динамический захват памяти во время исполнения.
? delete – динамически освобождает память, захваченную командой new.
? this – оператор указания на объект, для которого была вызвана данная функция.
? ~ – деструктор класса.
Рнструкции
В группу инструкций в С++ выделено все, что влияет на ход выполнения программы и порядок выполнения выражений. В том числе инструкцией считается последовательность выражений, оканчивающаяся точкой с запятой. Таким образом, в число инструкций попадают выражения присваивания и вызовы функций. Особым случаем инструкции является пустая инструкция, которая ничего, кроме точки с запятой, не содержит. Функционально такая инструкция особой пользы не несет, но может быть полезна при отладке или, к примеру, в организации бесконечного цикла.
if…else Рта инструкция позволяет выполнять некоторые выражения только РІ случае, РєРѕРіРґР° выполняется некоторое условие. Рмеет РґРІРµ формы: сокращенную Рё полную. Синтаксис сокращенной формы приведен ниже.
if (<condition>) <statement1>;
Полная форма выглядит несколько иначе.
if (<condition>) <statement1>; else <statement2>;
Если (if) условие в скобках (<condition>) в результате вычисления дает результат типа bool со значением true, то выполняется выражение <statement1>, иначе будет выполнено выражение <statement2>. Пример использования этой конструкции приведен в листинге 4.10. Листинг 4.10
void fother () {
char mstr[20];
mstr[0]= ;
int a = 5;
if (a>5) //Если a>5
{
strcat(mstr, «a>5»); //содержимым строки будет «a>5»
}
else //иначе
{
if (a =5) //Если а=5
{
strcat(mstr, «a=5»); //содержимым строки будет «a=5»
}
else //иначе
{
strcat(mstr, «a<5»); //содержимым строки будет «a<5»
};
};
}
Приведенный пример демонстрирует применение инструкций if…else. В листинге показано, что инструкции могут быть вложенными. Следует обратить внимание, что если в качестве выражений фигурируют блоки, то точка с запятой ставится только в конце инструкции. switch (переключатель)
Рта инструкция предназначена для того, чтобы переключить С…РѕРґ выполнения программы РЅР° РѕРґРЅСѓ РёР· ветвей РІ соответствии СЃРѕ значением переменной РЅР° РІС…РѕРґРµ.
Ее синтаксис приведен ниже:
switch (<switch variable>) {
case <constant expression>: <statement>; [break;]
default: <statement>;
}
Р’ этом определении показано, как переменная передается инструкции switch. Если значение переменной соответствует РѕРґРЅРѕРјСѓ РёР· значений константы case, то выполняется соответствующее выражение, которое может быть завершено инструкцией. Если РЅРµ было найдено значения переменной, соответствующее РѕРґРЅРѕР№ РёР· констант case, то выполняется ветвь default. Каждую РёР· ветвей желательно завершать инструкцией break, иначе возможно выполнение сразу нескольких ветвей. Ветвь default может отсутствовать РІ конструкции switch. Работа оператора switch проиллюстрирована РІ блоке 11 рассматриваемого примера. РџСЂРё помощи этого оператора РїСЂРѕРёСЃС…РѕРґРёС‚ выполнение той или РёРЅРѕР№ функции РІ зависимости РѕС‚ того, какая клавиша была нажата РЅР° клавиатуре. while Рнструкция while предназначена для организации цикла, РІ котором тело цикла может РЅРё разу РЅРµ быть выполнено. Рто зависит РѕС‚ значения переменной продолжения цикла. Синтаксис этой инструкции приведен ниже.
while (<condition>) <statement>
Рнструкция statement будет выполняться РґРѕ тех РїРѕСЂ, РїРѕРєР° будет оставаться верным условие condition. Пример РїРѕРґРѕР±РЅРѕРіРѕ цикла приведен ниже.
while (*p == ) p++; do while Рнструкция do while предназначена для организации цикла, РІ котором тело цикла будет выполнено хотя Р±С‹ РѕРґРёРЅ раз. Синтаксис этой инструкции приведен ниже.
do <statement> while (<condition>)
Рнструкция statement будет выполняться РґРѕ тех РїРѕСЂ, РїРѕРєР° будет выполняться условие condition. for Рнструкция for предназначена для организации параметрического цикла. Синтаксис этой инструкции приведен ниже.