开发者

C++ - struct vs. class [duplicate]

This question already has answers here: Closed 12 years ago.

Possible Duplicates:

C/C++ Struct vs Class

What are POD types in C++?

Hi,

In the C++ In a Nutshell book, in chapter 6: classes, unders Access specifiers, mentioned the following:

In a class definition, the default access for members and base classes is private. In a struct definition, the default is public. That is the only difference between a class an开发者_JAVA百科d a struct, although by convention, some programmers use struct only for POD classes and use class for all other classes.

My questions here are:

  • Isn't there another difference between classes and structs in that structs don't hold functions and just hold data?
  • What are POD classes? And, what is meant by all other classes here? Are there then special classes?

Thanks.


The other difference is that

template<class T> ...

is allowed, but

template<struct T> ...

is not.


You could prove to yourself that there is no other difference by trying to define a function in a struct. I remember even my college professor who was teaching about structs and classes in C++ was surprised to learn this (after being corrected by a student). I believe it, though. It was kind of amusing. The professor kept saying what the differences were and the student kept saying "actually you can do that in a struct too". Finally the prof. asked "OK, what is the difference" and the student informed him that the only difference was the default accessibility of members.

A quick Google search suggests that POD stands for "Plain Old Data".


POD classes are Plain-Old data classes that have only data members and nothing else. There are a few questions on stackoverflow about the same. Find one here.

Also, you can have functions as members of structs in C++ but not in C. You need to have pointers to functions as members in structs in C.


Ok, POD means plain old data. That usually refers to structs without any methods because these types are then used to structure multiple data that belong together.

As for structs not having methods: I have seen more than once that a struct had methods, and I don't feel that this would be unnatural.


1) It is the only difference in C++.

2) POD: plain old data Other classes -> not POD

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜