Propiedad o método estático (Static)
Métodos o propiedades estática nos permite de definir propiedades o funciones dentro de clases el cual podemos utilizar o acceder sin tener que instanciar la clase en algún objeto. Para definir propiedades o métodos estáticos usamos la palabra reservada static
. Las propiedades o métodos estáticas se le llaman class level attribute, esto significa que si la propiedad es pública podemos acceder a ella utilizando el símbolo de dos puntos dobles ::
no es necesario crear un objeto para acceder a la propiedad y el valor de la propiedad es el mismo, compartido entre todos los objetos que creamos basado en la misma clase el cual contiene la propiedad estática.
#include <iostream>
using namespace std;
class Book {
private:
long isbn;
string title;
string author;
int available;
public:
Book(
long _isbn,
string _title,
string _author,
int _available) {
this->isbn = _isbn;
this->title = _title;
this->author = _author;
this->available = _available;
objectCount++;
}
static int objectCount;
};
int Book::objectCount = 0;
int main()
{
Book book1(97852670063, "1984", "George Orwell", 12);
Book book2(97152972264, "Make It Time", "Jake Knapp", 6);
cout << "Total objects: " << Book::objectCount << endl;
return 0;
}
//-> Total objects: 2
Métodos estáticos los definimos para poder acceder solo y únicamente a propiedades estáticas.
#include <iostream>
using namespace std;
class Book {
private:
long isbn;
string title;
string author;
int available;
static int objectCount;
public:
Book(
long _isbn,
string _title,
string _author,
int _available) {
this->isbn = _isbn;
this->title = _title;
this->author = _author;
this->available = _available;
objectCount++;
}
static int getCount() {
return objectCount;
}
};
int Book::objectCount = 0;
int main()
{
cout << "Inital count: " << Book::getCount() << endl;
Book book1(97852670063, "1984", "George Orwell", 12);
Book book2(97152972264, "Make It Time", "Jake Knapp", 6);
cout << "Total objects: " << Book::getCount() << endl;
return 0;
}
//-> Inital count: 0
//-> Total objects: 2