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

results matching ""

    No results matching ""