Partilhar via


Especificadores de classe de armazenamento estático

Os especificadores de armazenamento de classe estáticos, static e extern, podem ser aplicados a objetos e funções. A tabela a seguir mostra onde as palavras-chave static e extern podem e não podem ser usadas.

Uso de static e de extern

Construtor

static pode

ser usado?

extern pode

ser usado?

Declarações de função dentro de um bloco

Não

Sim

Argumentos formais para uma função

Não

Não

Objetos em um bloco

Sim

Sim

Objetos fora de um bloco

Sim

Sim

Funções

Sim

Sim

Funções de membro de classe

Sim

Não

Dados de membro de classe

Sim

Não

Nomes typedef

Não

Não

Um nome especificado usando a palavra-chave static tem vinculação interna, exceto para os membros estáticos de uma classe que têm vinculação externa. Isto é, não é visível fora da unidade de conversão atual. Um nome especificado usando a palavra-chave extern tem vinculação externa a menos que previamente definido como tendo vinculação interna. Para obter mais informações sobre visibilidade de nomes, consulte Escopo e Programa e vinculação.

Dica

As funções que são declaradas como inline e que não são funções de membro de classe recebem as mesmas características de vinculação que as funções declaradas como static.

Um nome de classe cuja declaração ainda não foi encontrada pelo compilador pode ser usado em uma declaração extern. O nome introduzido por essa declaração não pode ser usado até que a declaração de classe seja encontrado.

Consulte também

Referência

Especificadores de classe de armazenamento