R
Справочное
руководство по С++
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", за исключением тех случаев, когда
оно используется как операнд адресной операции & или операции
вызова функции ().