Compartilhar via


Funções de membro estático

Funções de membro estático são consideradas têm escopo de classe.Em contraste com as funções de membro não estático, essas funções têm implícita não Este argumento; Portanto, eles podem usar somente os membros de dados estáticos, enumeradores ou tipos aninhados diretamente.Funções de membro estático podem ser acessadas sem usar um objeto do tipo classe correspondente.Considere este exemplo:

Exemplo

// static_member_functions.cpp
#include <stdio.h>

class StaticTest
{
private:
    static int x;
public:
    static int count()
    {
        return x;
    }
};

int StaticTest::x = 9;

int main()
{
    printf_s("%d\n", StaticTest::count());
}
  

Comentários

No código anterior, a classe StaticTest contém a função de membro estático count.Esta função retorna o valor do membro privado de classe, mas não está necessariamente associada um determinado objeto do tipo StaticTest.

Funções de membro estático têm ligação externa.Essas funções não têm esse ponteiros.Como resultado, as seguintes restrições se aplicam para tais funções:

  • Eles não podem acessar os dados de membro não estática de classe usando os operadores de seleção de membro (. or –>).

  • Eles não podem ser declarados como virtual.

  • Eles não podem ter o mesmo nome de uma função não estático que tem os mesmos tipos de argumento.

    ObservaçãoObservação

    O lado esquerdo de um operador de seleção de membro (. ou – >) que seleciona uma função de membro estático não é avaliada.Isso pode ser importante se a função é usada para seus efeitos colaterais.Por exemplo, a expressão SideEffects().CountOf() não chama a função SideEffects.

Consulte também

Referência

Esse ponteiro