c++ - texto - Punto y coma después de la función
signos de puntuación (4)
El punto y coma debe seguir el corchete de cierre de definición de clase. No es necesario después de las definiciones de las funciones de los miembros de la clase dentro de la definición de la clase. Se requiere, sin embargo, después de la clase, las declaraciones de funciones de miembro solo dentro de la definición de clase
#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
¿Hay alguna razón específica por la que algunas personas ponen un punto y coma después del corchete de cierre de la función de cierre?
void foo() {
};
En realidad no, el punto y coma no hace ninguna diferencia. Probablemente es una cuestión de hábito.
Puedes poner tantos puntos y comas si lo deseas en C ++ 11:
void foo() {
};;;;;;;;
La respuesta a su pregunta depende del alcance en el que se realiza la definición de esta función.
Si define dicha función en el ámbito del espacio de nombres , entonces el final ;
No tiene nada que ver con la definición de la función. Simplemente constituye una definición vacía separada, que sigue la definición de la función. Las definiciones vacías son legales en el ámbito del espacio de nombres en C ++ moderno. Esto también significa que en el ámbito del espacio de nombres puede agregar tantos puntos y comas superfluos adicionales como desee.
Si define dicha función en el alcance de la clase , siempre se le ha permitido agregar un único opcional ;
Al final de la definición. Tal es una parte integral de la definición de la función y está explícitamente permitido por la gramática. Es decir, en el alcance de la clase que se arrastra ;
No constituye una definición vacía independiente. Además, las definiciones vacías no están permitidas en el alcance de la clase. Esto significa que en el alcance de la clase solo puede agregar uno opcional ;
Después de la definición de la función, pero no más.
No, simplemente se ignora. Parece un error tipográfico.