Staattiset funktiot
Funktiot voidaan määritellä staattisiksi, mikä tarkoittaa että funktio silloin ei toimi oliotasolla vaan luokkatasolla. Silloin funktiosta on olemassa vain yksi kopio, kun taas 'normaaleista' funktioista (metodeista) on olemassa yhtä monta kopioita kuin on olioita.
Esimerkki 6. Staattiset funktiot, luokka toteuttaa Singleton-mallin.
#include <cstdlib>
#include <iostream>
using namespace std;
class CLuokka
{
public:
static CLuokka* Luo();
static void Tuhoa();
void Tulosta()
private:
CLuokka() {}
~CLuokka() {}
private:
static CLuokka* s_Itse; // Osoitin 'itseensä'.
};
// Staattiset jäsenmuuttujat tulee luoda globaalissa nimiavaruudessa:
CLuokka* CLuokka::s_Itse = NULL;
CLuokka* CLuokka::Luo()
{
if (s_Itse == NULL)
return s_Itse;
}
void CLuokka::Tuhoa()
{
if (s_Itse != NULL)
}
int main()
{
CLuokka* luokka = CLuokka::Luo(); // Staattisia funktioita kutsutaan muodossa: LUOKAN_NIMI::FUNKTION_NIMI
luokka->Tulosta();
CLuokka* luokka2 = CLuokka::Luo();
luokka2->Tulosta();
CLuokka::Tuhoa();
return 0;
}