Должна ли функция класса C ++ заканчиваться символом}; или только}? - PullRequest
5 голосов
/ 30 марта 2011

Основные вопросы о синтаксисе C ++.

Должна ли функция c ++ заканчиваться на a; или это не имеет значения?

Или в чем разница между этими двумя примерами?

с окончанием;

void Test :: print()
{
  ...
};

Без;

void Test :: print()
{
  ...
}

Я видел код C ++ как с, так и без, но я не понимаю разницы.

/ Спасибо


Обновление :

В этом случае; его следует избегать, поскольку он не делает ничего полезного и может даже стать проблемой в будущем.

Ответы [ 3 ]

11 голосов
/ 30 марта 2011

За пределами тела класса (где за определением функции необязательно может следовать один ;), определение функции завершается концом составного оператора - то есть закрытия }.В области имен пространства следующий токен после закрывающей скобки определения функции должен составлять часть следующего объявления.

В C ++ 03 нет такой вещи как empty-объявление , поэтому размещение ; недопустимо, хотя и допускается многими реализациями.(Хотя синтаксис C ++ 03 simple-объявление , по-видимому, позволяет пропустить decl-specier-seq и пропущенный init-Declarator-list ,оставляя только ;, есть семантическое правило, запрещающее исключать обе необязательные части, выраженное в 7 [dcl.dcl] / 3 стандарта.)

В простом объявлениинеобязательный список инициализаторов-объявлений может быть опущен только при объявлении класса (раздел 9) или перечисления (7.2), то есть когда decl-specier-seq содержит либо спецификатор класса , уточненный спецификатор типа с ключом класса (9.1) или спецификатор перечисления .

C ++ 0x представляет empty-декларацию (которая является декларацией без эффекта), так что вы можете иметь столько мошеннических ; в области имен, сколько пожелаете, хотянет веских причин для этого.

2 голосов
/ 30 марта 2011

Нет.Знак ;не должно быть конца функции.Возможно, вы видели знак в конце объявления класса

2 голосов
/ 30 марта 2011

Вы действительно добавляете пустые объявления в свой файл, когда вводите ложные точки с запятой. Это не имеет большого значения, как указал @ Space_C0wb0y.

Кстати, заголовок не соответствует вашему вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...