#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 }
Комментариев нет:
Отправить комментарий