Как реализуются типы членов?

Я смотрю этот ресурс:

http://www.cplusplus.com/reference/vector/vector/

Например, тип члена итератора для вектора класса.

Будет ли "тип члена" просто реализован как typedef или что-то подобное в векторном классе? Мне непонятно, что означает "тип члена", и я посмотрел пару учебников на С++, они даже не упоминают эту фразу вообще.

Ответ 1

Стандарт С++ также не использует эту фразу. Вместо этого он назвал бы это вложенным именем типа (§9.9).

Есть четыре способа получить один:

class C
{
public:
   typedef int int_type;       // as a nested typedef-name
   using float_type = float;   // C++11: typedef-name declared using 'using'

   class inner_type { /*...*/ };   // as a nested class or struct

   enum enum_type { one, two, three };  // nested enum (or 'enum class' in C++11)
};

Вложенные имена типов определяются в области видимости класса, и для того, чтобы ссылаться на них извне этой области, требуется квалификация имени:

int_type     a1;          // error, 'int_type' not known
C::int_type  a2;          // OK
C::enum_type a3 = C::one; // OK

Ответ 2

Тип пользователя просто означает тип, являющийся членом (этого класса). Он может быть typedef, как вы говорите (в случае vector он может быть T*), или он может быть вложен class (или struct).

Ответ 3

Тип члена может ссылаться на "вложенный класс" или "вложенную структуру". Это означает класс внутри другого класса. Если вы хотите сослаться на текстовые книги, тогда найдите "вложенные классы".