Пространства имён
Варианты
Действия

Typedef declaration

Материал из cppreference.com
< cpp‎ | language

 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
  • typedef - создаёт псевдоним, который может быть использован вместо имени типа (в том числе в сложных выражениях).

Содержание

[править] Синтаксис

typedef type_declaration;

[править] Объяснение

В декларации, которую следует ключевое слово typedef противном случае нормальное объявление типа (кроме того, что другие спецификаторы типа, например static, не может быть использован). Он может заявить одного или нескольких indentifiers на той же строке (например, Int и указатель на INT), он может объявить массив и функцию типы, указатели и ссылки, класс типов, и т.д. Каждый идентификатор, введенный в этом заявлении становится ЬурейеЕ-имя, а чем объект, что он станет, если ключевое слово typedef была удалена.
Оригинал:
The declaration that follows the keyword typedef is otherwise a normal type declaration (except that other type specifiers, e.g. static, cannot be used). It may declare one or many indentifiers on the same line (e.g. int and a pointer to int), it may declare array and function types, pointers and references, class types, etc. Every identifier introduced in this declaration becomes a typedef-name rather than an object that it would become if the keyword typedef was removed.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

typedef-имена являются псевдонимами для уже существующих типов и не могут создавать новый тип. typedef не может изменить существующие типы (в том числе и задаваемые через typedef). Будучи объявленным, typedef-имя может быть только передекларировано как псевдоним того же самого типа. typedef-имена действуют только в своей области видимости: разные функции или классы могут определить псевдонимы с одинаковым именем, но разными типами.

[править] Ключевые слова

typedef

[править] Пример

// simple typedef
typedef unsigned long ulong;
 
// the following two objects have the same type
unsigned long l1;
ulong l2;
 
// more complicated typedef
typedef int int_t, *intp_t, (&fp)(int, ulong), arr_t[10];
 
// the following two objects have the same type
int a1[10];
arr_t a2;
 
// common C idiom to avoid having to write "struct S"
typedef struct {int a; int b;} S;
 
// the following two objects have the same type
struct {int a; int b;} s1;
S s2;
 
// error: conflicting type specifier
// typedef static unsigned int uint;
 
// std::add_const, like many other metafunctions, use member typedefs
template< class T>
struct add_const {
    typedef const T type;
};

[править] См. также

Тип псевдонимы обеспечить такую ​​же функциональность как определения типов с использованием другого синтаксиса, а также применимы к шаблону имен.
Оригинал:
Тип псевдонимы provide the same functionality as typedefs using a different syntax, and are also applicable to template names.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.