В чем смысл этой комбинации оператора стрелки -> и оператора разрешения области ::?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В чем смысл этой комбинации оператора стрелки -> и оператора разрешения области ::?

Сообщение Anonymous »


На cppreference.com – «Поиск полного имени» я нашел этот странный пример кода:

struct C { typedef int I; }; определение типа int I1, I2; внешний int *p, *q; // Небольшая модификация, чтобы предотвратить ошибку компоновщика //структура A { ~A(); }; структура А { ~А() {}; }; определение типа A AB; интервал основной() { р->C::I::~I(); // Имя I после ~ ищется в той же области видимости, что и раньше :: // (то есть в области C, поэтому он находит C::I) q->I1::~I2(); // Имя I2 ищется в той же области, что и I1 // (то есть из текущей области, поэтому он находит ::I2) АВ х; х.AB::~AB(); // Имя AB после ~ ищется в той же области, что и AB перед :: // (то есть из текущей области, поэтому он находит ::AB) } К моему удивлению, это компилируется без ошибок. Но что вообще происходит в очередях

p->C::I::~I(); q->I1::~I2(); ? Это не только похоже на доступ к членам переменных int и каким-то образом ссылается на деструктор int, но и на p и q также являются переменными extern без какого-либо определения.

Почему этот синтаксис разрешен и что он на самом деле делает?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»