Jak zadeklarować składową stałą w klasie? W Javie jest to bardzo proste –  static final int CONSTANT = 5. W C# jeszcze prostsze – const int CONSTANT = 5. Zobacz, jak zrobić to w C++

Sposób nr 1

Wymaga on, by wartość stałej była znana już w momencie kompilacji:

// przykładowa klasa
class ConstantExample1 {
public:
	enum { CONSTANT_VALUE = 5 };
};

// przykład użycia
int main()
{
	ConstantExample1 ce1;
	int constant = ce1.CONSTANT_VALUE;

  	return 0;
}

Zaletą jest prosta deklaracja. Wadą – można w ten sposób zadeklarować jedynie stałą typu porządkowego – czyli int lub np. char, ale już nie float czy char*.

Sposób nr 2

Pozwala on określić wartość stałej w momencie tworzenie obiektu:

// przykładowa klasa
class ConstantExample2 {
public:
	const int CONSTANT_VALUE;
	ConstantExample2(const int num) : CONSTANT_VALUE(num) {}
};

// przykład użycia
int main()
{
	ConstantExample2 ce2(5);
	int constant = ce2.CONSTANT_VALUE;

  	return 0;
}

Główną zaletą jest to, że możesz zadeklarować stałą dowolnego typu. Wadą – że wymaga dodatkowego wysiłku, mianowicie umieszczenia jej na liście inicjalizacyjnej konstruktora.

Wnioski

Sposób pierwszy pozwala stworzyć stałą, która będzie miała taką samą wartość dla wszystkich obiektów danej klasy.

Sposób drugi pozwala tworzyć stałą o innej wartości dla każdego obiektu.

Related Posts: