logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.4.6 Преобразования указателей

Всюду, где указатели ($$R.8.2.1) присваиваются, инициализируются,

сравниваются или используются иным образом, могут происходить

следующие преобразования:

Константное выражение ($$R.5.19), которое сводится к нулю,

преобразуется в указатель, обычно называемый пустым указателем.

Гарантируется, что значение такого указателя будет отлично от

любого указателя на объект или функцию.

Указатель на объект любого типа, не являющегося const или

volatile, можно преобразовать в void*.

Указатель на функцию можно преобразовать в void*, при условии,

что для void* отводится достаточно памяти, чтобы хранить этот

указатель.

Указатель на данный класс можно преобразовать в указатель на

доступный базовый класс данного класса ($$R.10), если такое

преобразование не содержит двусмысленность ($$R.10.1). Базовый

класс считается доступным, если доступны его общие члены ($$R.11.1).

Результатом преобразования будет указатель на объект типа базового

класса, вложенный в объект типа производного класса. Пустой указатель

(0) преобразуется сам в себя.

Выражение типа "массив T" может преобразовываться в указатель

на начальный элемент массива.

Выражение типа "функция, возвращающая T" преобразуется в "указатель

на функцию, возвращающую T", за исключением тех случаев, когда

оно используется как операнд адресной операции & или операции

вызова функции ().