Partilhar via


Funções de membro estáticas

As funções membro estáticas são consideradas como tendo escopo da classe. Em contraste com funções membro não estáticas, estas funções não têm nenhum argumento this; portanto, elas podem usar apenas membros de dados estáticos, enumeradores ou tipos aninhados diretamente. As funções membro estáticas podem ser acessadas sem usar um objeto do tipo correspondente da classe. 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());  // 9
}

Comentários

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

As funções membro estáticas têm vinculação externa. Essas funções não têm este ponteiros. Como resultado, as seguintes restrições se aplicam a essas funções:

  • Elas não podem acessar dados não estáticos do membro da classe usando os operadores de seleção de membros (. ou ).

  • Não podem ser declarados como virtual.

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

    Dica

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

Consulte também

Referência

Ponteiro this