int main()
{
struct Bob
{
int a;
};
&Bob::a;
}
Что означает &Bob::a
означает? Боб - это тип, а не экземпляр, так что он берет адрес?Что означает & Type :: variable?
int main()
{
struct Bob
{
int a;
};
&Bob::a;
}
Что означает &Bob::a
означает? Боб - это тип, а не экземпляр, так что он берет адрес?Что означает & Type :: variable?
Это указатель на член класса. В соответствии со стандартом (N4296, 5.3.1):
В результате одноместный
&
оператора представляет собой указатель на его операнд. Операнд должен быть lvalue или квалифицированный идентификатор. Если операнд является квалифицирован-идентификатор именования нестатического или варианта членаm
некоторого классаC
с типомT
, результата имеет типа «указатель на член классаC
типаT
» и является prvalue назначенияC::m
,
Он создает [указатель на член] (http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member) '' 'типа' Bob'. –
Ключ здесь в том, что '&' не применяется к 'Bob', а вместо этого ко всему имени' Bob :: a'. –
@LightnessRacesinOrbit Однако, если вы попытаетесь использовать круглые скобки '& (Bob :: a)', это не сработает. – AlexD