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.