Есть ли какая-то конкретная причина, по которой некоторые люди помещают точку с запятой после фигурной скобки закрытия?
void foo() {
};
Есть ли какая-то конкретная причина, по которой некоторые люди помещают точку с запятой после фигурной скобки закрытия?
void foo() {
};
Не совсем, точка с запятой не имеет значения. Это, вероятно, вопрос привычки.
Вы можете поместить столько точек с запятой, если хотите, хотя в С++ 11:
void foo() {
};;;;;;;;
Нет, это просто игнорируется. Похож на опечатку.
Точка с запятой должна следовать за фигурной закрывающей скобкой класса. Это не требуется после определения функций членов класса внутри определения класса. Требуется, хотя после объявления функций класса только внутри определения класса.
#ifndef FRAME_COUNTER_H
#define FRAME_COUNTER_H
#include <iostream>
#include <SDL/SDL.h>
const Uint32 FPS = 60;
const Uint32 DELAY_TIME = 1000.0f / FPS;
class FrameCounter {
public:
FrameCounter();
void setFPS(int FPS) { m_FPS = FPS / (m_frameAccumulator / 1000); }
void start() { m_frameStart = SDL_GetTicks(); }
void run();
void reset() {}
void print() { printf("\nFPS: %5.1f\n", m_FPS); }
private:
int m_frameNumber;
Uint32 m_frameStart;
Uint32 m_frameDuration;
Uint32 m_frameAccumulator;
double m_FPS;
};
#endif
Ответ на ваш вопрос зависит от области применения этого определения функции.
Если вы определяете такую функцию в области пространства имен, то конечный ;
не имеет никакого отношения к определению функции. Он просто представляет собой отдельное пустое определение, которое следует за определением функции. Пустые определения являются законными в области пространства имен в современном С++. Это также означает, что в области пространства имен вы можете добавить столько лишних точек с запятой, сколько пожелаете.
Если вы определяете такую функцию в области видимости класса, вам всегда будет разрешено добавить один необязательный ;
в конце определения. Такой ;
является неотъемлемой частью определения функции и явно разрешен грамматикой. То есть в области класса, длина которой ;
не является независимым пустым определением. Более того, пустые определения не допускаются в классе. Это означает, что в области класса вы можете добавить только одно необязательное определение ;
после определения функции, но не более.