Det där du skrev med Math.Sin(x) var ett bra exempel. Du gör alltså ingen instans av klassen math (eller om det är en struct

)
Hursomhelst har jag kommit fram till att static i c++ världen fungerar lite annorlunda mot java, och troligtvis C#, har inte jobbat något med C# men språket tycker jag har fler likheter med java än c++.
En static funktion i en c++ klass är samma sak som en static funktion i java och c#, funktionen används inte för en instans utan som en yttre funktion du kan använda utan att ha en instans av klassen.
Den lilla skillnaden är när det gäller static variabler. I java och C#, är en static variabel i en klass en gemensam klassvariabel för alla instanser av klassen. T.ex. skapar du 4 instanser av klassen Form / JFrame och har en
static int count så håller denna variabel reda på hur många objekt du skapat av klassen. Och du kommer åt den på samma sätt som en vanlig instansvariabel.
I c++ dock, kan vanliga funktioner i klasser arbeta med static variabler (tror jag åtminstone

). Men syntaxen ser lite skum ut tycker jag för att göra det.
Kod: Markera allt
// c++ kodexempel
//MyClass.h
class MyClass{
public:
static int GetCount() { return count; }
private:
static int count;
};
// MyClass.cpp
#include "MyClass.h"
int MyClass::count;
count = 0;
Detta tycker jag ser lite skumt ut om man jämför med java och C#. För det första tycker jag det låter konstigt att static variabeln som är private kan initieras på detta sätt. Sedan att man måste skriva int MyClass::count; för att få kompilatorn att förstå att denna variabel finns i klassen.
Antar att såna här saker har "förfinats" bort i högnivåspråk som java och C#. C++ är kanske maktfullt, men lite krångligt i många fall
Är inte så duktig på varken C# eller C++ så rätta mig gärna om jag har fel någonstans
