struct vs. class

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 and 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.

    链接地址: http://www.djcxy.com/p/40304.html

    上一篇: 为什么我更喜欢使用成员初始化列表?

    下一篇: 结构与类