Can someone explain this C++ syntax?
I'm going through someone else's code and came across the following syntax:
typedef struct abc {
abc() : member(0){}
unsigned int member
}
It seems like a class with member variable and a constructor, except it is declared struct. I have two questi开发者_如何学Goons here.
- Is this syntax supported in C?
- What would be a reason to use structs over classes?
Thanks a lot in advance.
PS: how do I format the code?
This is not valid C.
In C++, struct
and class
are essentially synonyms. The only difference is that members and inheritance are public
by default in a struct
, and private
by default in a class
.
There are no hard guidelines on whether to choose struct
or class
. However, you'll often find people using struct
only for simple C-like plain old data structures ("PODs").
This is most assuredly just C++. struct
and class
are identical in C++, except for defaulting to public instead of private for inheritance and class contents.
In C++, struct and class are essentially the same thing, except that for a struct members are public by default. So just read it as you would a class.
abc()
is a constructor of class abc
, member
is a internal variable, constructor abc
defaults set member
as 0.
- The syntax is supported. The constructor initializes
member
to0
and does nothing else. struct
has a default access ofpublic
.
This is C++ code, however using typedef struct
(that comes from C) in C++ code is awful. There is difference between C and C++ and in C++ you don't need to typedef
structs. struct MyStruct
is sufficient declaration if you want to refer your struct via MyStruct myStruct;
. Mixing C with C++ is bad.
精彩评论