首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++ 中 struct 和 class 的区别?

C++ 中 struct 和 class 的区别?

原创
作者头像
代码小李
发布2025-01-27 18:48:23
发布2025-01-27 18:48:23
29000
代码可运行
举报
运行总次数:0
代码可运行

在 C++ 中,structclass 都是用于定义用户自定义数据类型的关键字,它们在语法上非常相似,但在默认访问控制和继承方式上有一些重要的区别。以下是 structclass 的主要区别:

1. 默认访问控制

  • struct
    • 成员变量和成员函数的默认访问控制是 public
    • 继承的默认访问控制是 public
  • class
    • 成员变量和成员函数的默认访问控制是 private
    • 继承的默认访问控制是 private

2. 代码示例

代码语言:cpp
代码运行次数:0
运行
复制
#include <iostream>

// struct 示例
struct MyStruct {
    int publicVar;  // 默认为 public
};

// class 示例
class MyClass {
    int privateVar;  // 默认为 private
};

// 继承示例
struct BaseStruct {
    int baseVar;
};

struct DerivedStruct : BaseStruct {
    int derivedVar;
};

class BaseClass {
protected:
    int baseVar;
};

class DerivedClass : BaseClass {
    int derivedVar;
};

int main() {
    MyStruct s;
    s.publicVar = 10;  // 可以直接访问

    MyClass c;
    // c.privateVar = 10;  // 编译错误,privateVar 是私有的

    DerivedStruct ds;
    ds.baseVar = 20;    // 可以直接访问
    ds.derivedVar = 30; // 可以直接访问

    DerivedClass dc;
    // dc.baseVar = 20;    // 编译错误,baseVar 是 protected 的
    // dc.derivedVar = 30; // 编译错误,derivedVar 是私有的

    return 0;
}

其他区别

  • 语义上的区别
    • 传统上,struct 通常用于表示简单的数据结构,而 class 用于表示更复杂的对象,包含更多的行为和封装。
    • 然而,这种区别更多是约定俗成的,并不是语言强制的。
  • 互换性
    • structclass 在功能上是完全等价的,可以互换使用。选择使用哪个关键字主要取决于个人或团队的编码风格和习惯。

总结

  • struct:默认成员和继承都是 public,通常用于表示简单的数据结构。
  • class:默认成员和继承都是 private,通常用于表示复杂的对象,包含更多的行为和封装。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 默认访问控制
  • 2. 代码示例
  • 其他区别
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档