Static метод и static поле класса.
Доброго времени суток. Предположим, есть класс:
class Set{
public:
Set(...){...}//конструктор
~Set(); //деструктор
static get_num(){...}; // функция связана с использованием поля num;
private:
static int num;
};
Применение static к обычным функциям или переменным вне класса мне понятно, такой же самый смысл есть и при использовании модификатора static в классе, или это как-то связано с вызовом функции в main()
? Зачем так делать?
Буду благодарен за объяснение.
Обновление
Как я понял, поправьте, если ошибаюсь:
- static поле класса создается с целью сделать его общим для все объектов класса, которые могут ее изменить при присвоении в main() и инициализируется вне класса, для того чтобы была выделенная память компилятором в глобальном участке.
- static метод класса не может работать с НЕстатическими полями класса, так как такой метод получает неявно указатель this. (Уточнить, this присутствует из-за того, что функция является глобальной из-за спецификатора static? Или она всегда является глобальной и дело не в этом?)