C++中struct与class仅默认访问权限和默认继承方式不同,其余完全一致:struct成员和继承默认public,class默认private;语义上struct多用于纯数据聚合,class用于抽象封装。

在C++中,struct 和 class 的核心区别只有**默认访问权限和默认继承方式不同**,其余语法、功能、内存布局、性能表现完全一致。面试时若答“struct只能存数据、class才能封装”或“struct不能有函数”等,属于对C++的误解。
这是最常被问到、也最容易忽略的关键点:
例如:
struct S { int x; void f() {} }; // x 和 f 都是 publicclass C { int y; void g() {} }; // y 和 g 都是 private一旦显式写了 public:、private: 或 protected:,这个默认规则就失效了——两者行为完全相同。
立即学习“C++免费学习笔记(深入)”;
当不写继承关键字时:
比如:
struct B {}; struct D : B {}; // 等价于 struct D : public B {}class B {}; class D : B {}; // 等价于 class D : private B {}实际开发中几乎都会显式写出继承方式(尤其是 public),所以这点影响很小,但面试官可能用来考察细节掌握程度。
语言层面没限制,但行业普遍形成以下约定俗成的用法:
{1, "abc"})、常用于POD类型或与C兼容注意:这不是强制规则。你可以用 struct 实现完整类(含私有成员、虚函数、模板等),也可以用 class 做纯数据结构——编译器都允许,只是违背直觉、降低可读性。
以下说法都是错误的:
本质上,C++ 标准把 struct 和 class 视为同一机制的两种拼写方式,仅在上述两个默认行为上有区别。
基本上就这些。记住:区别小,但面试常考;用法上靠习惯,而非语法限制。
以上就是c++++中struct和class的区别_c++结构体与类的选择【面试题】的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号