2015-07-31 2 views
3
int main() 
{ 
    struct Bob 
    { 
     int a; 
    }; 

    &Bob::a; 
} 

Что означает &Bob::a означает? Боб - это тип, а не экземпляр, так что он берет адрес?Что означает & Type :: variable?

+1

Он создает [указатель на член] (http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member) '' 'типа' Bob'. –

+0

Ключ здесь в том, что '&' не применяется к 'Bob', а вместо этого ко всему имени' Bob :: a'. –

+0

@LightnessRacesinOrbit Однако, если вы попытаетесь использовать круглые скобки '& (Bob :: a)', это не сработает. – AlexD

ответ

2

Это указатель на член класса. В соответствии со стандартом (N4296, 5.3.1):

В результате одноместный & оператора представляет собой указатель на его операнд. Операнд должен быть lvalue или квалифицированный идентификатор. Если операнд является квалифицирован-идентификатор именования нестатического или варианта члена m некоторого класса C с типом T, результата имеет типа «указатель на член класса C типа T» и является prvalue назначения C::m ,

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