Funzioni membro static

Le funzioni membro statiche sono considerate di avere ambito della classe.A differenza delle funzioni membro non static, queste funzioni presentano non implicito ciò argomento; pertanto, può utilizzare direttamente solo i membri dati statici, gli enumeratori, o i tipi annidati.Le funzioni membro statiche sono accessibili senza utilizzare un oggetto del tipo corrispondente della classe.Si consideri l'esempio seguente:

Esempio

// 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());
}
  

Commenti

Nel codice precedente, la classe StaticTest contiene la funzione membro static count.Questa funzione restituisce il valore del membro della classe privato ma non è necessariamente associata a un determinato oggetto di tipo StaticTest.

Le funzioni membro static di collegamento esterno.queste funzioni non hanno questo puntatori.Di conseguenza, le restrizioni seguenti si applicano a tali funzioni:

  • Non possono accedere ai dati non static del membro della classe utilizzando gli operatori di selezione dei membri (. o - >).

  • Non possono essere dichiarati come virtuale.

  • Non possono avere lo stesso nome di una funzione non statica che presenta gli stessi tipi di argomento.

    [!NOTA]

    Il lato sinistro di un operatore di selezione dei membri (. o - >) che seleziona una funzione membro static non viene valutato.Ciò può risultare importante se la funzione viene utilizzata per i relativi effetti collaterali.Ad esempio, l'espressione SideEffects().CountOf() non chiama la funzione SideEffects.

Vedere anche

Riferimenti

questo puntatore