Имена и типы в переполнении стека

Я начинаю свой пост с интересующих меня вопросов:

Q1: Правда ли, что объявление ввело одно или несколько имен в единицу перевода, которые обозначают тип?

Q2: (Если ответишь за Q1 является положительным) Как компилятор определяет тип имени, введенного объявлением? Рассмотрим следующую декларацию:

Этот вопрос появляется, когда я начал читать 3-е предложение рабочего проекта c ++.

Сущность — это значение, объект, ссылка, функция, перечислитель, тип,
член класса, шаблон, специализация шаблона, пространство имен, параметр
упаковать или это.

Имя — это использование идентификатора (2.11),
идентификатор оператора-функции (13.5), идентификатор оператора-литерала (13.5.8), преобразование
идентификатор функции (12.3.2) или идентификатор шаблона (14.2), который обозначает объект или
ярлык (6.6.4, 6.1).

List<Observer *> *_observers;

Эта декларация введена _observers в текущем объеме. Я хочу понять, как компилятор определяет тип _observers? Я заинтересован в формальном алгоритме, описанном в c++ спекуляция

1

Решение

Объявление может вводить тип, функцию, переменную.

class A;  // This declares a type, A
A* aPtr;  // This declares a variable, aPtr
// The type of aPtr is A*
A foo();  // This declares a function, foo.

В твоем случае,

List<Observer*> *_Observers;  // Declares a variable, _observers.
// The type of _observers is List<Observer*>*.
// For this to be a valid declarion, the types List,
// a class template, and Observer must be known
// (declared or defined) before the
// variable declaration.
1

Другие решения


По вопросам рекламы [email protected]