结构体和类的区别?

Posted

技术标签:

【中文标题】结构体和类的区别?【英文标题】:Differences between structs and classes? 【发布时间】:2010-02-03 12:23:03 【问题描述】:

结构是否支持继承?我认为这是个愚蠢的问题,但我对此不太了解。

这样写代码是什么意思:

struct A 
   void f()  cout << "Class A" << endl; 
;

struct B: A 
   void f()  cout << "Class B" << endl; 
;

在结构中也会出现私有部分,它们不提供封装吗?结构和类之间的主要区别是什么?

【问题讨论】:

***.com/questions/979211/struct-inheritance-in-c 【参考方案1】:

是的,结构支持类所做的所有功能。区别在于:

结构继承默认是公开的 结构成员默认是公开的

【讨论】:

@yesraaj:结构和类之间并没有太大区别,它是class 关键字的单独语法使用,struct 关键字不共享。更准确地说,我们可能甚至不应该谈论 C++ 中的“结构”:struct A ; 定义了一个类。 @sinec:是的,这是可能的。结构和类不仅行为相似,它们是完全相同的东西。只是有两个不同的关键字可以定义一个类,而你使用哪个关键字决定了默认的可访问性。 @Solitaire Classes 没有这些优势 - 请重新阅读我的答案。如果需要,您可以始终使用 struct,但它通常保留用于普通旧数据 (POD),即以与在 C 中使用的方式相同的方式使用。不过,这只是一个命名约定。 @Roger 真的吗?我以前从未见过这样的做法——你的同事也这样做吗? “类有更多的优势,如虚拟功能等” - 没有。结构和类完全相同。结构可以有虚函数。只是 C++ 程序员倾向于维护一个约定,即如果某些东西很像 C 结构,他们将使用 struct 关键字来定义它,而如果它很复杂,他们将使用类。 “大部分”和“复杂”的定义并没有得到普遍认可:有些人将 struct 严格用于 POD 类,其他人在公共访问并不重要的其他情况下使用它(例如本地定义的函子)。其他人则忽略任何此类约定。【参考方案2】:

结构是默认可见性公开的类。其他一切都是平等的。

【讨论】:

【参考方案3】:

在 C++ 中,结构和类之间的唯一区别在于,对于结构,方法/成员变量的可见性默认是公共的,而对于类,它默认是私有的。除此之外没有区别。

【讨论】:

以上是关于结构体和类的区别?的主要内容,如果未能解决你的问题,请参考以下文章

结构体和类的区别,联系

结构体和类的区别?

结构体和类的唯一区别就是类函数没有加说明是私有而结构体函数是公有

Swift-Class和Struct的区别(结构体和类的区别)

结构和类的区别及结构的使用

c#笔记——结构体和类的访问权限