Преобразование указателя в указатель в константу
Я читаю книгу под названием C++ Gotchas, в которой объясняются преобразования между константными указателями, и у меня возникают некоторые проблемы с пониманием следующих правил:
Два типа указателей T1 и T2 похожи, если существует тип T и целое число n > 0, такое что:
T1 - это cv 1, 0 указатель на cv 1,1, указатель на.,, cv 1, n − 1 указатель на cv 1, n T
а также,
T2 - это cv 2,0 указатель на cv 2,1 указатель на.,, cv 2, n − 1 указатель на cv 2, n T
где каждый cvi,j является const, volatile, const volatile или ничего.
Может кто-то указать мне правильное направление, где я могу получить объяснение, или кто-нибудь знает, что означают cv 1,0 и cv 1,1 в каждой из вышеперечисленных последовательностей? Книга недостаточно помогает мне понять это. Но я уверен, что это как-то связано с языком C++.
1 ответ
cv i,j
представляет коллекцию из 2*(n+1) заполнителей:
Для каждой комбинации i
с 1 <= i <= 2
а также j
с 0 <= j <= n
заполнитель cv i,j
обозначает один из трех спецификаторов const,volatile, const volatlie
или ничего.
Отрывок книги другими словами означает, что если эти заполнители и тип T
можно найти так, что два утверждения ("T1 is ..") удовлетворяются, тогда T1
а также T2
называются "похожими".
Например T1 = const int*
а также T2 = int*
похожи, потому что они заполняют два утверждения из выдержки, если один выбирает:
T = int
,n = 1
cv1,0= {nothing}
а такжеcv1,1 = const
cv2,0={nothing}
а такжеcv2,1 = {nothing}
Чтобы увидеть это, просто вставьте заполнители:
const int*
это указатель на const int
int*
это указатель на int