Typedef declaration
Da cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
A declaração typedef fornece uma maneira de criar um alias que podem ser usados em qualquer lugar em lugar de um nome de tipo (possivelmente complexo).
Original:
The typedef declaration provides a way to create an alias that can be used anywhere in place of a (possibly complex) type name.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Índice |
[editar] Sintaxe
typedef type_declaration;
|
|||||||||
[editar] Explicação
A declaração que segue a palavra-chave é outra typedef uma declaração de tipo normal (exceto que os especificadores de outro tipo, por exemplo, static, não pode ser usado). Pode declarar um ou muitos indentifiers na mesma linha (por exemplo, int e um ponteiro para int), pode declarar array e tipos de função, ponteiros e referências, tipos de classe, etc Cada identificador introduzida nesta declaração torna-se um nome de typedef vez do que um objeto que se tornaria se o typedef palavra-chave foi removido.
Original:
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.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Os nomes typedef-são apelidos para os tipos existentes, e não são declarações de novos tipos. Typedef não pode ser usado para alterar o sentido de um nome do tipo existente (incluindo um nome de typedef). Uma vez declarado, um nome de typedef só podem ser redeclarado para referir o mesmo tipo de novo. Nomes de typedef estão em vigor somente no âmbito onde eles são visíveis: diferentes funções ou declarações de classe podem definir tipos com nomes idênticos com significado diferente.
Original:
The typedef-names are aliases for existing types, and are not declarations of new types. Typedef cannot be used to change the meaning of an existing type name (including a typedef-name). Once declared, a typedef-name may only be redeclared to refer to the same type again. Typedef names are only in effect in the scope where they are visible: different functions or class declarations may define identically-named types with different meaning.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Palavras-chave
[editar] Exemplo
// 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; };
[editar] Veja também
alias de tipo fornecer a mesma funcionalidade que typedefs usando uma sintaxe diferente, e são também aplicáveis aos nomes de modelo.
Original:
alias de tipo provide the same functionality as typedefs using a different syntax, and are also applicable to template names.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.