Reputation: 635
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 questions here.
Thanks a lot in advance.
PS: how do I format the code?
Upvotes: 2
Views: 353
Reputation: 445
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.
Upvotes: 0
Reputation: 272447
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").
Upvotes: 8
Reputation: 234795
member
to 0
and does nothing else.struct
has a default access of public
.Upvotes: 0
Reputation: 2612
abc()
is a constructor of class abc
, member
is a internal variable, constructor abc
defaults set member
as 0.
Upvotes: 0
Reputation: 146900
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.
Upvotes: 3
Reputation: 7946
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.
Upvotes: 0