2011-12-21 9 views
4

Я читаю книгу под названием C++ Gotchas которая объясняет преобразования между константными указателями и у меня возникают некоторые проблемы с пониманием следующих правил:указателя на указателе к Const преобразованию

Два типа указателем T1 и T2 подобны, если существует тип T и целое число п> 0, что:

Т1 резюме 1, 0 указатель на резюме 1,1 указатель. , , резюме 1, п-1 указатель на резюме 1, п Т

и

Т2 резюме 2,0 указатель на резюме 2,1 указатель. , , резюме 2, п-1 указатель на резюме 2, п Т

где каждый CVI, J является Const, энергозависимой, Const летучей, или ничего.

Может кто-то мне точку в правильном направлении, где я могу получить объяснение или кто знаком с тем, что резюме 1,0 и резюме 1,1 означает, в каждом из приведенной выше последовательности? Книга не помогает мне, чтобы понять это. Но я уверен, что это связано с языком C++.

ответ

4

cv i,j представляет коллекцию 2 * (N + 1) заполнителей:

Для каждой комбинации i с 1 <= i <= 2 и j с 0 <= j <= n Заполнителем cv i,j обозначает одну из трех спецификаторов const,volatile, const volatlie или ничего.

В книге выдержка другими словами означает, что если эти заполнители и тип T можно найти, например, что два оператора («Т1 ..») выполнены, то T1 и T2 называются «подобным».

Например T1 = const int* и T2 = int* похожи, потому что они FULLFILL два утверждения из отрывка, если один выбирает:

  • T = int, n = 1
  • cv1,0= {nothing} и cv1,1 = const
  • cv2,0={nothing} и cv2,1 = {nothing}

T о это увидеть, просто вставить заполнители:

const int* является указателем на const int

int* является указателем на int