开发者

Why would I use a struct in a program?

I see lot of struct code like below

struct codDrives {
   WCHAR letter;
   WCHAR volume[100];
} Drives[26];

We can use variables or array something like that to store the data.

But I am not sure why would开发者_如何学Python I use a struct in the programs?


Structs are inherited from C, and in C++ they are almost identical to classes. The difference is that the members of a struct are by default public, while class members are by default private.

So the typical use of structs in C++ is dummy data structures which contain no logic (only - possibly - constructors and/or necessary operators).

On a more general level, classes / structs are used to group together conceptionally related data pieces. E.g. for representing a person, you may need his/her first name, surname, gender, date of birth etc. It is convenient to define a struct containing all these pieces of data as members. Then you can store and pass around instances of this struct instead of a whole bunch of distinct variables. This makes the code cleaner, less error prone, more readable and easier to maintain.


Here's some info on structs: http://www.cplusplus.com/doc/tutorial/structures/

Also, they are useful for example returning multiple values in a function, say you need to return 3 values from a function, you can return a struct with all the 3 values inside it.


One reason to use structs might be to control the size and layout of the data so it can be written to and read from disk more easily.

Another reason would be for code that is used in C programs as well as C++


Structs can also contain methods (constructors are very useful for example). Another thing is, that with structs or classes you can define copy constructors or assignment operators which then allow you to easily copy instances of your struct, even if there are pointers inside - you take care of this in the methods of the struct and don't have to worry about it later. Moreover, this allows for a nice OOP design. There are much more benefits (but also drawbacks)...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜