C++中class和struct的核心区别在于默认访问权限和继承方式:class成员默认private,继承默认private;struct成员默认public,继承默认public。

在C++中,类(class)和结构体(struct)本质上非常相似,都可以包含数据成员和成员函数,支持构造函数、析构函数、继承、多态等面向对象特性。它们之间的主要区别在于默认的访问控制和默认的继承方式。
默认访问权限不同
这是最核心的区别:
- 在class中,成员默认是 private 的。
- 在struct中,成员默认是 public 的。
例如:
class MyClass {int x; // 默认为 private
};
struct MyStruct {
int x; // 默认为 public
};
默认继承方式不同
当使用继承时,class 和 struct 的默认继承访问级别也不同:
立即学习“C++免费学习笔记(深入)”;
- class 默认以 private 方式继承基类。
- struct 默认以 public 方式继承基类。
示例:
class Base { };class Derived : Base { }; // 默认是 private 继承
struct DerivedFromStruct : Base { }; // 默认是 public 继承
语义上的使用习惯
虽然语法上可以互换,但开发者通常根据用途选择使用 class 还是 struct:
- class 常用于定义具有封装性、复杂行为的对象,强调数据隐藏和接口设计。
- struct 多用于轻量级的数据聚合,比如只包含 public 成员变量的简单数据结构(POD类型),语义上更“开放”。
这种用法是一种约定俗成的编码风格,并非语言强制。
基本上就这些。C++ 中 class 和 struct 差异很小,关键在于默认访问控制和编程习惯。理解这一点后,可以根据实际场景灵活选用。不复杂但容易忽略细节。











