This question was already asked in the context of C#/.Net.
Now I’d like to learn the differences between a struct and a class in C++. Please discuss the technical differences as well as reasons for choosing one or the other in OO design.
I’ll start with an obvious difference:
- If you don’t specify
public:orprivate:, members of a struct are public by default; members of a class are private by default.
I’m sure there are other differences to be found in the obscure corners of the C++ specification.
You forget the tricky 2nd difference between classes and structs.
Quoth the standard (§11.2.2 in C++98 through C++11):
And just for completeness’ sake, the more widely known difference between class and struct is defined in (11.2):
Additional difference: the keyword
classcan be used to declare template parameters, while thestructkeyword cannot be so used.