2016-02-26 5 views
2

Так что я искал в грамматике C++ для синтаксиса вещи, я наткнулся на это правило грамматики:Что это за декларант?

declarator: 
direct-declarator 
ptr-operator declarator 

direct-declarator: 
declarator-id 

declarator-id: 
id-expression 
::opt nested-name-specifier(opt) type-name <------- oO 

type-name: 
class-name 
enum-name 
typedef-name 

Что заставило меня задаться вопросом, какой из описателя имеет имя типа в нем? Любой пример поможет. Спасибо

+4

Вы действительно уверены, что вам нужно читать грамматику на C++? Это не для слабых сердец. – SergeyA

+0

Где вы это видите? Это не то, что говорит моя копия стандарта. – Brian

ответ

2

В этой форме он существует только в старых версиях стандарта C++. Я думаю, что есть для определения конструктора

void SomeClass::SomeClass() {} 

Я думаю, что в следующей редакции

A-имя класса имеет особое значение в объявлении класса этого имени и когда квалифицированных по этому имени, используя разрешение области оператора :: (5.1, 12.1, 12.4).

предназначен для сопровождения этой части грамматики.

+0

Фактически для определения конструктора вне класса, ранее объявленного в классе (что показывает ваш пример) –

+0

Спасибо большое sir :) +1 –

+1

последние грамматики перевели эту конструкцию в * id-выражение * –