什么时候应该在C ++中使用类与结构?

C++中的类和结构在功能上基本等效,主要差异在于默认访问权限:结构成员默认为public,类成员默认为private。通常,结构用于数据传输对象或值对象,特别是当不需要封装和方法时。类则更适合需要封装和行为的对象。选择使用哪种取决于数据的封装需求和编程风格。
摘要由CSDN通过智能技术生成

在哪种情况下,在C ++中使用struct比使用class更好?


#1楼

它们是相同的东西,具有不同的默认值(对于class默认为private,对于struct默认为public),因此从理论上讲它们是完全可以互换的。

因此,即使我只想打包一些信息来移动,我也使用了一个结构,即使我在其中放了一些方法(但不是很多)。 如果是最不透明的东西,主要用途是通过方法,而不是直接传递给数据成员,则使用完整类。


#2楼

默认情况下,结构具有公共访问权限,而类则默认具有私有访问权限。

我个人将结构用于数据传输对象或用作值对象。 当这样使用时,我将所有成员声明为const,以防止被其他代码修改。


#3楼

正如其他所有人所指出的,实际上只有两种实际语言差异:

  • struct默认为公共访问,而class默认为私有访问。
  • 继承时, struct默认为public继承,而class默认为private继承。 (具有讽刺意味的是,与C ++中的许多事情一样,默认值是向后的:到目前为止, public继承是更常见的选择,但是人们很少声明struct只是为了节省键入“ public ”关键字的时间。

但是实际上,真正的区别是在声明了构造函数/析构函数的class / struct与未声明构造函数/析构函数的class / struct之间。 对于“普通数据” POD类型有某些保证,一旦您接管了班级的建设,这些保证将不再适用。 为了清楚地区分,许多人故意将struct用作POD类型,并且,如果他们要添加任何方法,请使用class es。 否则,以下两个片段之间的区别是没有意义的:

class X
{
  public:

  // ...
};

struct X
{
  // ...
};

(顺便说一下,这里的一个线程对“ POD类型”的实际含义做了一些很好的解释: C ++中的POD类型是什么?


#4楼

C ++ FAQ Lite

结构的成员和基类默认情况下是公共的,而在类中,它们默认是私有的。 注意:应将基类显式设置为公共,私有或受保护,而不要依赖默认值。

struct和class在功能上是等效的。

好的,足够的干净利落的技术讨论。 从情感上讲,大多数开发人员在类和结构之间做出强烈区分。 结构只是感觉像是一堆开放的位,几乎没有封装或功能性的方式。 班级感觉像是一个有活力的社会成员,拥有智能的服务,强大的封装障碍和明确定义的界面。 因为这是大多数人已经拥有的含义,所以如果您有一个方法很少且具有公共数据的类,则应该使用struct关键字(这种情况确实存在于设计良好的系统中!)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值