c++中struct和class有什么区别_结构体与类在访问权限和用法上的区别

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

在C++中,structclass 的主要区别在于默认的访问权限和继承方式,其他方面基本一致。它们都可以包含成员变量、成员函数、构造函数、析构函数,也都能支持继承和多态。

默认访问权限不同

这是最核心的区别:

  • struct 中,成员的默认访问权限是 public
  • class 中,成员的默认访问权限是 private

例如:

struct MyStruct {
  int a; // 默认 public
};

class MyClass {
  int b; // 默认 private
};

上面代码中,a 可以直接被外部访问,而 b 不行,除非显式声明为 public

默认继承方式不同

当使用继承时,两者的默认继承权限也不同:

  • 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++里本质是一样的机制,区别只在默认权限设置。理解这一点后,可以根据需要选择更合适的关键词来表达设计意图。