Skip to content

Latest commit

 

History

History
91 lines (64 loc) · 2.11 KB

File metadata and controls

91 lines (64 loc) · 2.11 KB

Programowanie obiektowe

Zmienne i funkcje statyczne

Coders School

Zmienna lub stała klasy

Czasami chcielibyśmy przypisać jakąś stałą cechę do klasy. Nie konkretnych obiektów, a klasy samej w sobie. Np. każdy obiekt klasy ma nazwę "Object".

class Object {
public:
    std::string GetName() const { return name_; }

private:
    const std::string name_ = "Object";
};

W celu otrzymania nazwy tego obiektu, musimy najpierw utworzyć obiekt, a następnie zawołać getName().

int main() {
    Object obj;
    std::cout << obj.getName() << '\n';
}

Nawet jeżeli obiekt zajmowałby dużo miejsca w pamięci, a my chcielibyśmy tylko jego nazwę i tak musimy go utworzyć, ponieważ tylko na nim możemy zawołać metodę getName().


static

Rozwiązaniem tej uciążliwości jest static. Co więcej, problem ten możemy rozwiązać na 2 sposoby. Nie musimy w ten sposób tworzyć specjalnie obiektu, aby dostać się do cechy klasy, jaką jest jej nazwa.

class ClassA {
public:
    static std::string getName() { return "ClassA"; }
};

class ClassB {
public:
    static std::string name_;
};

std::string ClassB::name_{"ClassB"};

int main() {
    std::cout << ClassA::getName() << '\n';
    std::cout << ClassB::name_ << '\n';

    return 0;
}

Q&A


Zadanie 4

Przekształć klasę bazową Coordinates, tak aby miała funkcję statyczną

static size_t distance(const Coordinates& lhs, const Coordinates& rhs)

Funkcja ta powinna zwracać dystans pomiędzy dwoma pozycjami.