首页 文章

C - struct vs. class [duplicate]

提问于
浏览
47

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

嗨,

C++ In a Nutshell bookchapter 6: classesAccess specifiers 下面,提到了以下内容:

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

我的问题是:

  • Isn 't there another difference between classes and structs in that structs don' t保持功能并保存数据?

  • 什么是POD课程?而且,这里所有其他课程的含义是什么?那么特殊课程吗?

谢谢 .

5 回答

  • 8

    另一个不同之处在于

    template<class T> ...
    

    是允许的,但是

    template<struct T> ...
    

    不是 .

  • 3

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

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

  • 2

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

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

  • 93

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

    至于没有方法的结构:我不止一次看过结构有方法,我觉得这不自然 .

  • 39

    1)这是C的唯一区别 .

    2)POD:plain old data其他类 - >不是POD

相关问题