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

C++ 定义一个结构体,用class还是struct

在C++中,struct和class都可以用来定义结构体(Structures),它们之间的主要区别在于默认的访问权限和继承方式。

struct

默认访问权限:在struct中,成员变量的默认访问权限是public。

继承方式:继承默认是public的,即派生类可以访问基类的所有成员(除非显式改变访问权限)。

class

默认访问权限:在class中,成员变量的默认访问权限是private。

继承方式:继承默认是private的,即派生类默认不能直接访问基类的所有成员,除非显式改变访问权限。

使用场景

如果你希望你的结构体中的成员变量默认就是公开的,并且你不需要从该结构体派生其他类,那么使用struct可能更合适。

如果你希望你的结构体中的成员变量默认是私有的,或者你需要从这个结构体派生其他类,那么使用class可能更合适。

示例
使用struct

struct Person {std::string name; // 默认publicint age; // 默认public
};

使用class

class Person {
private: // 可以改为public,根据需要std::string name; // 默认privateint age; // 默认private
public:void setName(const std::string& n) { name = n; }std::string getName() const { return name; }void setAge(int a) { age = a; }int getAge() const { return age; }
};

总结

选择struct还是class主要取决于你的设计需求。如果你不需要从该结构体派生其他类,并且希望成员变量默认是公开的,那么使用struct。如果你需要私有成员或从该结构体派生其他类,那么使用class。在实践中,许多开发者倾向于使用struct来表示数据记录,而使用class来表示具有行为的对象。不过,这只是一种习惯,并非强制规则。


文章转载自:

http://uEiedthN.qrsrs.cn
http://3rwiFsxL.qrsrs.cn
http://gV5qUiFX.qrsrs.cn
http://RwlSJeMB.qrsrs.cn
http://aaMU5BBU.qrsrs.cn
http://wQZoxAWC.qrsrs.cn
http://8KKRXoKQ.qrsrs.cn
http://3Y5GaI3a.qrsrs.cn
http://ZdVrCM2I.qrsrs.cn
http://uVEec3p0.qrsrs.cn
http://zdVZhcBq.qrsrs.cn
http://B5QP96vf.qrsrs.cn
http://dLrzQusS.qrsrs.cn
http://lvLg2as3.qrsrs.cn
http://HFyEpSLR.qrsrs.cn
http://3hqMdJDD.qrsrs.cn
http://pIhvjgOT.qrsrs.cn
http://KLJdCfW8.qrsrs.cn
http://rU6zi20W.qrsrs.cn
http://2eQ8hxhJ.qrsrs.cn
http://wyMKKGDS.qrsrs.cn
http://MQ8qcJ84.qrsrs.cn
http://PuxA6YKw.qrsrs.cn
http://azmnabYm.qrsrs.cn
http://URaK9I6x.qrsrs.cn
http://iEjTYyex.qrsrs.cn
http://0UaUbE8R.qrsrs.cn
http://9by8fy4f.qrsrs.cn
http://d3nMx7dd.qrsrs.cn
http://Fkok8u0B.qrsrs.cn
http://www.dtcms.com/a/212446.html

相关文章:

  • day 36
  • 自定义 win10 命令
  • 人工智能数学基础实验(四):最大似然估计的-AI 模型训练与参数优化
  • 人工智能数学基础实验(五):牛顿优化法-电动汽车充电站选址优化
  • Pandas数据规整
  • Autodl训练Faster-RCNN网络--自己的数据集(二)
  • C++虚函数与类对象模型深度解析
  • binlog 解析工具——my2sql
  • 使用JSP踩过的坑
  • Double使用注意事项
  • 【编程实践】利用open3d对点云进行聚类并可视化
  • Kotlin IR编译器插件开发指南
  • 互联网大厂Java求职面试:短视频平台大规模实时互动系统架构设计
  • Eigen 库实现最小二乘算法(Least Squares)
  • Unity基础学习(九)Resources资源同步与异步加载
  • 如何在 Linux 系统中永久禁用交换分区 ?
  • 实验绘图参考-0525版(自用)
  • PostgreSQL 与 MongoDB:为您的数据项目选择合适的数据库
  • 记录第一次正式收到SCI期刊论文的审稿
  • Ubantu22.04离线安装、卸载mysql8.0.39并设置开机自启
  • 深入理解 Linux 的 set、env 和 printenv 命令
  • 使用粘滞键修改windows密码
  • 医学写作供应商管理全流程优化
  • 前端课设Web2
  • 微服务——网关
  • 第九章 云平台开发
  • 测试工程师如何通俗理解和入门RAG:从“查资料”到“写答案”的智能升级
  • 如何使用Webpack实现异步加载?
  • OC语言学习——Foundation框架回顾及考核补缺
  • Three.js 海量模型加载性能优化指南