C ++ - struct vs. class

时间:2011-01-25 09:40:38

标签: c++ class struct pod

  

可能重复:
  C/C++ Struct vs Class
  What are POD types in C++?

您好,

C ++在坚果壳书中,在第6章:类中,在访问说明符下,提到了以下内容:

  

在类定义中,默认值   成员和基类的访问权限是   私人的。在结构定义中,   默认是公开的。 这是唯一的   一个班级与一个班级之间的差异   结构,虽然按照惯例,有些   程序员只在 POD中使用struct   类并使用所有其他类   类

我的问题是:

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

感谢。

5 个答案:

答案 0 :(得分:93)

另一个区别是

template<class T> ...

是允许的,但是

template<struct T> ...

不是。

答案 1 :(得分:39)

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

Google快速搜索表明POD代表“普通旧数据”。

答案 2 :(得分:8)

POD类是普通旧数据类,只有数据成员而没有其他内容。关于stackoverflow的问题有几个问题。找一个here

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

答案 3 :(得分:3)

好的,POD表示普通旧数据。这通常是指structs 没有任何方法,因为这些类型随后用于构建属于一起的多个数据。

对于没有方法的结构:我不止一次看到结构有方法,我觉得这不自然。

答案 4 :(得分:2)

1)这是C ++的唯一区别。

2)POD:plain old data其他类 - &gt;不是POD