To typy, które zawierają dwa rodzaje składników: pola (zmienne) oraz metody (funkcje). Deklaracja klasy jest następująca:
class nazwa_klasy {gdzie lista_pól_i_metod może zawierać następujące elementy:
lista_pól_i_metod
};
Uwaga: Jedyna różnica pomiędzy klasami a strukturami polega na tym, że składniki klas domyślnie są prywatne, a składniki struktur publiczne.
Przykład:
class A {
public:
int a;
void f();
private:
int b;
int g(int x);
};
void A::f() { ... }
int A::g(int x) { ... }
Każda klasa może zawierać jeden lub więcej konstruktorów. Konstruktor jest funkcją wywoływaną automatycznie podczas tworzenia nowego obiektu. Zazwyczaj jest on używany do ustawienia początkowych wartości pól obiektu. Nazwa konstruktora jest taka sama jak nazwa klasy i nie zwraca on żadnej wartości (nie należy też żadnej zwracanej wartości deklarować). Oto przykład definicji klasy zawierającej konstruktory:
class A {To który konstruktor zostanie wywołany zależy od sposobu utworzenia obiektu. Np.
public:
A();
A(int n);
A(char* s, bool b);
...
};
A::A() { ... }
A::A(int n) { ... }
A::A(char* s, bool b) { ... }
A a(7);spowoduje wywołanie drugiego konstruktora, a
A* w = new A("Anna", true);wywoła trzeci konstruktor. W przypadku, gdy nie zadeklarowaliśmy żadnego konstruktora, automatycznie stworzony zostanie konstruktor bez parametrów o pustej treści.
Uwagi:
A(parametry):
zmienna_1(wartość_1),
zmienna_2(wartość_2),
...
zmienna_n(wartość_n) {
...
}
Destruktor jest metodą wywoływaną automatycznie w trakcie kasowania obiektu. Zazwyczaj jest on używany do zwalniania pamięci zarezerwowanej przez obiekt. Destruktor dla klasy A ma nazwę ~A i podobnie jak konstruktory nie zwraca żadnej wartości.