methods - Difference between }; and } in C++ -
brand new c++.
woking on project assignment, , in illustration code have found methods ending }; instead of typical (expected) }
for example:
circbuffer::circbuffer() { cout<<"constructor called\n"; cout<<"buffer has " << buffersize << "elements\n"; (int = 0; i<= buffersize -1; i++) { buffer[i] = 0; } readin = writein = 0; setdelay(0); }; // <=== here
i can't find info why done online.
thanks, lewis
that trailing ;
in namespace scope constitutes empty declaration. have in above code seen compiler as
circbuffer::circbuffer() { ... } // <- `circbuffer::circbuffer` definition ends here ; // <- empty declaration declares nil
i.e. method definition not end };
compiler's point of view. ends }
, , ;
treated separately , independently.
empty declaration illegal in original version of c++ , in c++03, legalized in c++11. code quoted above hence invalid in c++98 , c++03, legal in c++11. however, c++98 compilers supported empty declarations non-standard extension.
note above applies out-of-class function definitions (as in example). in-class fellow member function definitions trailing ;
has been legal (and optional)
class c { c() { ... }; // <- ';' not required, legal in c++98 };
(in case optional ;
part of fellow member definition, meaning definition indeed end in };
, not introduce empty declaration.)
when see in actual code, bad habit, maybe based on confusion between in-class , out-of-class definition contexts.
c++ methods
No comments:
Post a Comment