Statická funkce členů
Třídy oboru jsou považovány za statické členské funkce.V kontrastu k nestatické členské funkce mají tyto funkce ne implicitní této argument; Proto se může používat pouze statická data členů, výčtu nebo vnořené typy přímo.Funkce členů statické možný bez použití objektu odpovídající typu třída.Vezměme si jako příklad:
Příklad
// 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());
}
Komentáře
V předcházejícím kódu třídy StaticTest obsahuje statické členské funkce count.Tato funkce vrací hodnotu člen soukromé třídy, ale není nutně spojen s daný objekt typu StaticTest.
Statický člen funkce mají externí propojení.Tyto funkce nemají tohoto ukazatele.Výsledkem těchto funkcí platí následující omezení:
Nelze získat přístup k nestatické třídy členských dat pomocí operátorů výběr členů (. or –>).
Nelze deklarovat jako virtuální.
Nemohou mít stejný název jako nestatické funkce, která má stejné typy argumentů.
[!POZNÁMKA]
V levé části Výběr členů operátor (. nebo – >), že vybere funkce statický člen není vyhodnocena.To může být důležité, pokud je tato funkce použita pro své vedlejší účinky.Například výraz SideEffects().CountOf() není pro volání funkce SideEffects.