2010-07-05 4 views
1

Я просто наткнулся на код, который имел protected статические функции класса, как:Работают ли модификаторы доступа для статических функций класса?

class C { 
... 

    protected: 
     static int fun() { ... } 
}; 

меня интересно, если функции статического класса могут иметь модификаторы доступа и что бы это значило? Поскольку они являются глобальными классами, а не pre-instance.

Спасибо, Бода Cydo.

ответ

1

Модификаторы доступа в C++ не работают per-instance. Они всегда работают за класс. Так оно и было. Который делает его совершенно логичным, чтобы они применимы к статическим членам.

Это довольно распространенное заблуждение, что защита доступа на C++ как-то должна работать на один экземпляр, что, похоже, и вдохновило ваш вопрос.

+0

Благодарим вас за разъяснение этого. Верьте или нет, я думал, что они «за экземпляр»! Очень серьезная ошибка в моем процессе обучения. Теперь я знаю, что они «за класс». – bodacydo

0

Он по-прежнему выполняет ту же задачу: только производные классы могут вызвать эту статическую функцию.

+0

О? Я думал, что статические функции класса всегда были доступны, несмотря ни на что. – bodacydo

+0

static означает, что они доступны без экземпляра доступного объекта. Они имеют глобальный масштаб, но они по-прежнему подчиняются ограничениям доступа. – Cogwheel

0

Это означает, что защита: статические функции могут быть доступны из других функций-членов этого класса или из функций-членов производных классов.

 Смежные вопросы

  • Нет связанных вопросов^_^