Sdílet prostřednictvím


Statické členské funkce

Statické členské funkce jsou považovány za statické členské funkce s oborem třídy.Na rozdíl od nestatických členských funkcí nemají tyto funkce žádný implicitní argument this. Proto mohou přímo používat pouze statické datové členy, enumerátory nebo vnořené typy.Ke statickým členským funkcím lze přistupovat bez použití objektu odpovídajícího typu třídy.Zvažte v tomto příkladu:

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

Komentáře

V předchozím kódu obsahuje třída StaticTest funkci statického členu count.Funkce vrací hodnotu členu soukromé třídy, ale není nutně spojena se zadaným objektem typu StaticTest.

Statické členské funkce mají vnější propojení.Tyto funkce nemají ukazatele this.V důsledku jsou na takové funkce aplikována následující omezení:

  • Nelze získat přístup k data člena nestatické třídy pomocí operátorů výběr členů (. nebo –>).

  • Nelze je deklarovat jako virtual.

  • Nemohou mít stejný název jako nestatická funkce, která má stejné typy argumentu.

    [!POZNÁMKA]

    Levé straně operátoru výběr členů (. nebo –>), že vybere funkce statický člen není vyhodnocena.To může být důležité v případě, že se funkce používá pro své vedlejší účinky.Například výraz SideEffects().CountOf() nevolá funkci SideEffects.

Viz také

Referenční dokumentace

this – ukazatel