C++ 类/结构成员的默认可见性

问题描述 投票:0回答:3

在 C++ 中,为什么类成员的默认可见性是 private,而结构的默认可见性是 public?

c++ class struct member
3个回答
108
投票

C++ 是作为 C 的超集引入的。结构体是从 C 继承而来的,其中其成员的语义是

public
的语义。存在大量 C 代码,包括需要与 C++ 一起使用的使用结构的库。

类是在 C++ 中引入的,为了符合 OO 封装哲学,它们的成员默认为

private


11
投票

因为类是面向对象的常用方式,这意味着成员变量应该是私有的并具有公共访问器 - 这有利于创建低耦合。 另一方面,结构必须与 C 结构兼容,C 结构始终是公共的(C 中没有公共和私有的概念),并且不使用访问器/修改器。


2
投票

可能是为了向后兼容 C 结构。 这样,在 C 代码中声明的结构在 C++ 代码中使用时将继续以相同的方式工作。

© www.soinside.com 2019 - 2024. All rights reserved.