【问题标题】:structures are public while classes can be public and private [duplicate]结构是公共的,而类可以是公共的和私有的
【发布时间】:2013-07-26 05:48:38
【问题描述】:

我在工作面试中被问到一个问题:

structclass有什么区别?”

我简单地回答:

struct 的成员只能是公共的,而 class 的成员可以被声明为公共的或私有的。”

但现在我对我的答案有点困惑。我一直在网上寻找 strcut 和 class 之间的区别,但在任何地方都看不到这种区别。我对雇主的回答不正确吗?

如果是的话,除了这个之外,struct 和 class 之间实际上有什么区别:

类的成员默认是私有的,而结构的成员默认是公有的。

【问题讨论】:

  • 在 C++ 中,除了您已经提到的那个之外,没有任何区别。此外,struct 的成员也可以是私有的。
  • 在 C++ 中,它们是一回事。唯一的区别是你说的那个。
  • 从 C++ 的角度来看,唯一的区别是,默认情况下,结构成员是“公共的”,而类成员是“私有的”。 C只有结构;没有课。在 C 中,结构仅包含数据。在 C++ 中,还为“this”指针分配了空间。
  • 唯一的部分是错误的。结构成员不仅是公开的(反之亦然)。但除了在 C++ 中你是 100% 正确的。但是,在 C 和 C# 中,您错了。 C# 将结构视为不可为空的对象(还有一些其他更改,但这是主要更改)。

标签: c++ class struct


【解决方案1】:

在 C++ 中,最后一个语句是正确的,但不完整。默认情况下,类的成员对于类是私有的,对于结构是公共的。

缺少的是同样适用于它们的基类:默认情况下,继承在类中是私有的,而在结构中是公共的。结构和类在 C++ 中是等价的,你可以使用任何一个关键字来表达完全相同的类型。

看来你的答案不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2014-05-25
    • 2020-12-04
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多