Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Статический метод класса

#cpp


Для чего может понадобиться обьёвлять метод класса, используя спецификатор static?
Переменные в этом методе так же будут static? Что будет происходить при создании нескольких
экземпляров класса? Как в памяти всё это дело будет храниться?    


Ответы

Ответ 1



Статический метод может работать со статическими переменными класса и с объектами класса. Он может выполнять какие-то действия общие для всех объектов данного класса или для указываемой группы объектов, изменение общих параметров, что-то вроде сборки мусора и т.д. Переменные внутри метода не обязательно будут static. Создание и уничтожение экземпляров класса никак не затронет статический метод, его можно вызывать независимо от существования объектов класса. Это аналог обычной функции, только имя у неё необычное и область видимости. Существование статического метода никак не отражается на том, как будет храниться объект класса.

Ответ 2



Описание на msdn модификатора static Здесь более подробно про static в C++

Ответ 3



Объявление метода как static позволяет возможность блокировать вызовы для RValue-объекта даже при компиляции в стандарте c++98. //C++11 class A{ public: void f()const&; void f()const&&=delete; void g()&; }; { A a; a.f(); //ok A().f(); //bad a.g(); //ok A().g(); //bad } //C++98 class A{ public: static void f(A const * ); static void g(A & ); }; { A a; A::f(&a); //ok A::f(&A()); //bad A::g(a); //ok A::g(A()); //bad }

Комментариев нет:

Отправить комментарий