C++ - struct vs. class

50 c++ struct class pod

可能的重复:
C/C++ Struct vs Class C++
中的POD类型是什么?

嗨,

C++ In a Nutshell一书中,在第6章:类中,在Access说明符下面,提到了以下内容:

在类定义中,成员和基类的默认访问权限是私有的.在结构定义中,默认值为public.这是类和结构之间的唯一区别,尽管按照惯例,一些程序员仅将结构用于POD类,并将类用于所有其他类.

我的问题是:

  • 类和结构之间是否存在另一个区别,因为结构不包含函数而只保存数据?
  • 什么是POD课程?而且,这里所有其他课程的含义是什么?那么特殊课程吗?

谢谢.

Sim*_*ter 95

另一个不同之处在于

template<class T> ...
Run Code Online (Sandbox Code Playgroud)

是允许的,但是

template<struct T> ...
Run Code Online (Sandbox Code Playgroud)

不是.

  • +1为独特的方法 (21认同)
  • 使用模板的官方方式是`template <typename T>`,`template <class T>`有点误导,因为遗留而存在. (16认同)

Blu*_*kMN 39

您可以通过尝试在结构中定义函数来向自己证明没有其他区别.我记得即使我的大学教授正在教授C++中的结构和课程,也很惊讶地得知这一点(在被学生纠正之后).我相信它.这有点儿很有趣.教授不断说出差异是什么,学生一直说"实际上你也可以在结构中做到这一点".教授最后.问"好的,有什么区别",学生告诉他,唯一的区别是成员的默认可访问性.

谷歌的快速搜索表明,POD代表"普通旧数据".

  • 这位老师的糟糕时刻,毫无疑问:) (9认同)

Sri*_*ram 8

POD类是Plain-Old数据类,只有数据成员而没有其他内容.关于stackoverflow的问题有几个问题.在这里找一个.

此外,您可以将函数作为C++中的结构的成员而不是C中的函数.您需要将函数指针作为C中的结构中的成员.