struct和class的核心区别在于默认访问权限与继承方式:struct默认public,class默认private;其余功能完全一致。

在C++中,struct 和 class 的主要区别在于默认的访问权限和继承方式,其他方面基本一致。它们都可以包含成员变量、成员函数、构造函数、析构函数,也都能支持继承和多态。
默认访问权限不同
这是最核心的区别:
- 在 struct 中,成员的默认访问权限是 public。
- 在 class 中,成员的默认访问权限是 private。
例如:
struct MyStruct {int a; // 默认 public
};
class MyClass {
int b; // 默认 private
};
上面代码中,a 可以直接被外部访问,而 b 不行,除非显式声明为 public。
立即学习“C++免费学习笔记(深入)”;
默认继承方式不同
当使用继承时,两者的默认继承权限也不同:
- struct 默认使用 public 继承。
- class 默认使用 private 继承。
示例:
struct Base {};struct Derived1 : Base { }; // 等价于 public Base
class Derived2 : Base { }; // 等价于 private Base
这意味着 Derived1 会公开继承 Base 的接口,而 Derived2 则不会。
用法上的习惯约定
虽然语法上可以互换(比如用 struct 实现复杂类逻辑),但通常有如下编程习惯:
- struct 常用于表示纯数据结构,比如坐标点、配置信息等,侧重数据聚合。
- class 更常用于面向对象设计,封装数据和行为,强调接口与实现分离。
这种约定不是语言强制的,而是社区通用做法,有助于提高代码可读性。
基本上就这些。struct 和 class 在C++里本质是一样的机制,区别只在默认权限设置。理解这一点后,可以根据需要选择更合适的关键词来表达设计意图。











