当前位置: 首页 > news >正文

c++中struct和class的区别小结

前言

在C++中,class和struct都是用于定义自定义数据类型的关键字,但它们之间有一些区别。这些区别主要涉及成员的默认访问权限和继承。

正题

成员的默认访问权限:

  • 在class中,默认情况下,成员的访问权限是private,这意味着除了类的内部,其他地方无法直接访问类的私有成员。
  • 在struct中,默认情况下,成员的访问权限是public,这意味着类的外部也可以直接访问结构体的成员。

继承:

  • 当使用class定义类时,默认的继承访问权限是private,这意味着基类的成员对派生类是private的,除非通过继承控制符进行了显式修改。
  • 当使用struct定义类时,默认的继承访问权限是public,这意味着基类的成员对派生类是public的,除非通过继承控制符进行了显式修改。

以下是一个示例,演示了class和struct之间的区别:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include <iostream>

classClassExample {

intprivateMember;

public:

intpublicMember;

ClassExample() : privateMember(0), publicMember(0) {}

voidShowPrivate() {

std::cout <<"Private: "<< privateMember << std::endl;

}

};

structStructExample {

intprivateMember;

public:

intpublicMember;

StructExample() : privateMember(0), publicMember(0) {}

voidShowPrivate() {

std::cout <<"Private: "<< privateMember << std::endl;

}

};

intmain() {

ClassExample classObj;

StructExample structObj;

classObj.publicMember = 42;

structObj.publicMember = 42;

classObj.privateMember;// 无法访问,因为 privateMember 是 private 的

structObj.privateMember;// 可以访问,因为 privateMember 是 public 的

return0;

}

总之,class和struct的主要区别在于默认的成员访问权限和继承访问权限。然而,这两者在其他方面都可以用来定义类,包括成员变量、成员函数、构造函数等。选择使用哪个关键字取决于你希望如何组织和访问类的成员。

http://www.jsqmd.com/news/1052660/

相关文章:

  • PrimeNG实战指南:Angular企业级UI组件库深度应用
  • XXMI启动器:终极游戏模组管理指南,告别繁琐安装流程
  • Google Drive仅查看PDF下载解决方案:自动化工具使用指南
  • ModSecurity+Apache老旧系统WAF加固实战指南
  • 告别键盘连击烦恼:KeyboardChatterBlocker拯救你的机械键盘使用体验
  • DeepSeek V4 本地部署完整教程:性能实测与生产级调优
  • Owl Alpha 新手快速上手指南
  • 2026年评价高的温州纸杯封口膜/易撕封口膜/纸杯封口膜厂家选择推荐 - 品牌宣传支持者
  • 嵌入式GUI开发:SEGGER emWin 2D图形库核心技术与实战指南
  • 3步掌握终极Mac清理方案:彻底告别应用残留释放磁盘空间
  • 降AIGC平台红黑榜:实测3款热门工具,剖析实用程度与常见陷阱,文末附妙招
  • 大模型持续学习:梯度手术与模型合并如何解决灾难性遗忘
  • Qwen 3.5-27B本地部署实战:RTX 4090+ vLLM+AWQ量化全栈指南
  • Sunshine游戏串流实用配置指南:7个高效解决方案与进阶技巧
  • M68HC08电机控制SDK:从硬件抽象到工业级代码的嵌入式开发实践
  • Qwen3 MOE架构与Reasoning RL技术解析及本地部署实战
  • BIND DNSSEC实战配置:从密钥生成到ad标志验证
  • 基于LLM嵌入与SVM的临床文本特征工程:创伤后癫痫预测实践
  • 基于PIC16C745的PS/2转USB鼠标转换器设计与实现
  • 2026年6月不锈钢滚针轴承厂商哪家可靠,连铸机耐高温轴承/凸轮轴承/单向轴承/滚针轴承,不锈钢滚针轴承源头厂家怎么选择 - 品牌推荐师
  • 从零到一掌握Locust:Python分布式性能测试实战指南
  • 2026曲靖漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 2026枣庄漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 数据迁移的暗礁:存储引擎选型与跨引擎迁移的工程实践
  • Unity Mod Manager终极指南:3步完成Unity游戏模组高效管理
  • 机器学习在弱引力透镜宇宙学中的应用:从参数推断到分布外检测
  • 基于秘密共享与OPRF的模糊隐私集合求交(PSI)协议设计与实现
  • 【Netty源码解读和权威指南】第34篇:Netty Selector优化——为什么比JDK NIO快这么多
  • GPT-4o替代Gemini的生产力迁移实战:上下文稳定性与提示词工程
  • Android应用安全加固实战:从ProGuard混淆到Dex加固的完整指南