Semicolon after class declaration braces

前端 未结 7 871
忘了有多久
忘了有多久 2020-11-29 20:17

In C++ classes, why the semi-colon after the closing brace? I regularly forget it and get compiler errors, and hence lost time. Seems somewhat superfluous to me, which is un

7条回答
  •  孤独总比滥情好
    2020-11-29 20:38

    The link provided by @MichaelHaren appears to provide the root cause. The semicolon (as others have pointed out) is inherited from C. But that doesn't explain why C used it in the first place. The discussion includes this gem of an example:

    struct fred { int x; long y; }; 
    main() 
    { 
      return 0; 
    } 
    

    Older versions of C had an implicit int return type from a function unless declared otherwise. If we omit the ; at the end of the structure definition, we're not only defining a new type fred, but also declaring that main() will return an instance of fred. I.e. the code would be parsed like this:

    struct fred { int x; long y; } main()
    { 
      return 0; /* invalid return type, expected fred type */
    } 
    

提交回复
热议问题