C++ 在C++;,结构也是类吗?

C++ 在C++;,结构也是类吗?,c++,class,struct,taxonomy,C++,Class,Struct,Taxonomy,可能重复: 我知道struct和class之间的技术区别;当然,这个问题以前也被问过 面向对象编程将对象和类联系起来。在C++分类中,结构也是一个类?< p>是的,它是一个完全的类->代码>结构> /COD>关键字,它是默认的所有成员都可以公开访问的一个语法糖,而在类< /代码>中,它们是私有的。除了它们不同的缺省访问说明符之外,它们在C++中是完全相同的。 的所有成员和属性 默认情况下,struct是public 的所有成员和属性 默认情况下,class是private 是的。唯一的区别是

可能重复:

我知道struct和class之间的技术区别;当然,这个问题以前也被问过


面向对象编程将对象和类联系起来。在C++分类中,结构也是一个类?

< p>是的,它是一个完全的类->代码>结构> /COD>关键字,它是默认的所有成员都可以公开访问的一个语法糖,而在类< /代码>中,它们是私有的。除了它们不同的缺省访问说明符之外,它们在C++中是完全相同的。
  • 的所有成员和属性 默认情况下,
    struct
    public

  • 的所有成员和属性 默认情况下,
    class
    private


  • 是的。唯一的区别是,默认情况下,在
    类中,所有内容都是私有的,而在
    结构中,所有内容都是公共的。从这个意义上讲,区别纯粹是句法上的

  • 默认情况下,结构的成员是公共的
  • 类的默认继承是私有的,而结构的默认继承是公共的

  • +1.语法仍然存在,主要是为了与普通C完全兼容。感谢sharptooth。我知道这些区别。我猜你的直觉是,通过如此相似,结构也是一个类。这也是C++标准中的位置吗?我问这个问题的一个原因是,我看到一些评论纠正了作者对结构作为类的引用。这两者占用内存的方式有什么不同吗?@Salaman:没有。它们是一样的。这不是C#。@user643722——这主要是一个历史性的意外。很久以前,类被添加到C中,创建了“C with class”语言。这种语言最终演变成我们现在所知道的C++。在这个过程中的某个地方,有一天有人问“为什么我们不能在结构中有成员函数?”。答案是“没有理由”。所以,我们就在这里。我想标记这个重复的,但实际上这个问题及其答案并没有直接出来,并说用
    struct
    定义的类和用
    class
    定义的类一样是一个类。从这个意义上说,“结构和类之间的区别是什么”这个问题已经是错误的,它意味着有两种类型。它应该是“关键字结构和关键字类之间有什么区别”,因为在C++中没有任何“结构”这样的东西,我在问之前读过这两个问题,并且相信它不是复制品;希望是一个简单、具体、有用的问题;至少对我来说。这是一个分类学问题。是C++的“结构”,也是“类”吗?谢谢。这不是或的完全副本。@user643722:在这种情况下,您想要的答案是9/4:“结构就是类…”。任何关于差异的进一步信息都可以从您的POV中找到。不过,要注意严格使用这个定义。我认为(例如)17.1.8中使用了“structure”一词是不恰当的,我不确定该标准是否真的打算说,
    traits
    template参数是未定义的行为,用
    class
    定义。此外,当标准提到“数据结构”时,它通常意味着类,而不是这个意义上的结构,那么当它被预声明时,它需要被预声明为
    结构A,也不是
    A类。一些编译器(例如MSVC)区分
    class
    struct
    成员使用不同的名称损坏。这纯粹是语法上的区别,这是否意味着struct也是一个类?或者换句话说,“class”和“struct”是否有单独的名称空间?
    class foo
    struct foo
    能否同时存在?@Alnitak:试试看。你的编译器会抱怨重新定义了
    struct foo
    (或
    class foo
    ,无论你先定义哪个)。@Alnitak:不,这是一个分类问题。事实上-共享名称空间是他们共享分类的进一步证据。在我的问题中,我提到我知道技术上的差异。你说,基本上,是的。能给我一个确定的答案吗?:)(我确实知道技术上的区别。)