2013-06-05 3 views
-1

я видел что-то вроде следующего в тесте ИКМ, код находится в одном файле:область применения и доступ к файлам правила

class A{ 

public: 
    int a; 
    A(); 

protected: 
    int x; 

private: 
    int y; 

}; 

void ARandomFunction(){ 
    //Implementation 
} 

который может ARandomFunction() доступ к переменным класса А? Вообще говоря, что можно получить, если декалярации все в одном файле?

+0

Это ничем не отличается от нормального. –

ответ

0

Находясь в том же файле ничего не меняет, ваша функция может получить доступ к a только как это public и ваша функция не является членом A (для private членов), ни подклассов его (для protected членов).

1

Эти переменные будут для каждого экземпляра (нестатические переменные-члены), поэтому вам сначала нужно создать объект для доступа к ним. Доступ к элементам только public можно получить из отдельно стоящей функции, если только функция не объявлена ​​friend этого класса, и в этом случае к ней могут быть доступны все члены.

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

0

Насколько я знаю, используя приведенный выше пример, ARandomFUnction может обращаться к общедоступным переменным и функциям независимо от наследования. Защищенные переменные могут быть доступны только в том случае, если ARandomFunction содержится в классе, который наследует или является членом класса A. Частные переменные и методы могут быть доступны только из одного класса.

+0

Предполагая модель государственного наследования? – mezamorphic

+0

Я так считаю. Не запрограммирован на C++ в течение долгого времени, поэтому я приношу свои извинения, если моя информация не так подробно, как должна быть. – StMotorSpark

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