新闻中心
C++中struct和class有什么本质区别?(代码示例)
本质区别只有一个:默认访问权限不同。struct默认public,成员无需显式声明即可被外部访问;class默认private,需显式声明public才能被外部访问。

本质区别只有一个:默认访问权限不同。
struct 默认是 public
定义 struct 时,成员(包括变量和函数)默认是 public 的,无需显式写 public: 就能被外部访问。
struct Point {
int x, y; // ← 默认 public
void print() { // ← 默认 public
std::cout << "(" << x << "," << y << ")\n";
}
};
int main() {
Point p{1, 2};
p.x = 10; // ✅ 合法:x 是 public
p.print(); // ✅ 合法:print() 是 public
}
class 默认是 private
定义 class 时,成员默认是 private 的,不加访问说明符就无法从外部直接访问。
class Point {
int x, y; // ← 默认 private
void print() { // ← 默认 private
std::cout << "(" << x << "," << y << ")\n";
}
};
int main() {
Point p;
p.x = 10; // ❌ 错误:x 不可访问
p.print(); // ❌ 错误:print() 不可访问
}
其他方面完全等价
除了默认访问权限,struct 和 class 在 C++ 中功能上没有区别:
晓象AI资讯阅读神器
晓象-AI时代的资讯阅读神器
72
查看详情
- 都能定义成员变量、成员函数、构造函数、析构函数、运算符重载
- 都能继承(单继承、多继承)、被继承、有虚函数、支持模板
- 都能用
public:/protected:/private:显式控制访问权限 - 都可以作为模板参数,都可以有友元(friend)
比如给 class 加上 public:,它就和 struct 行为一致:
class Point {
public: // ← 显式声明
int x, y;
void print() { std::cout << "(" << x << "," << y << ")\n"; }
};
习惯用法 ≠ 语言规则
虽然大家习惯用 struct 表示纯数据聚合(如坐标、配置项),用 class 表示封装逻辑的对象,但这只是约定,不是强制要求。
- 你可以写一个带虚函数、私有成员、复杂构造的 struct
- 也可以写一个只有 public 成员、无函数的 class
- 编译器不关心你用哪个关键字,只看访问控制和语义是否合法
基本上就这些。记住:默认访问权限是唯一本质区别,其余全是风格和惯例。
以上就是C++中struct和class有什么本质区别?(代码示例)的详细内容,更多请关注其它相关文章!
# 修饰符
# 境外营销推广网站
# 泸州网站建设和优化服务
# 频繁营销推广犯法吗
# 崇文网站建设免费咨询
# 拼多多营销宣传推广方案
# 市场营销信息流推广
# 跨境整合营销推广方案设计
# 白云seo网站优化推广教程
# 推广小语种网站取名
# 合川网站建设工作推荐会
# c++
# 就能
# 你可以
# 什么用
# 尼克
# 只有一个
# 都能
# 运算符
# 访问权限
# 有什么
# 区别
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
生成rdflib自定义SPARQL函数:参数匹配与实践指南
如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】
荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】
Pyrogram与g4f集成:异步编程实践与常见错误解决
poki网页游戏推荐_poki免费游戏平台入口
一加 14R 快充无反应_一加 14R 充电优化
J*aScript中高效管理与清空动态列表:避免循环陷阱
一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰
ArrayList与LinkedList核心操作的Big-O复杂度分析
蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
qq音乐在线播放入口_qq音乐电脑版登录链接
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
必由学网页版入口 必由学官方平台直接访问
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
Composer如何在生产环境安全地执行composer update
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】
Yandex免登录网页版地址 Yandex搜索引擎官方访问入口
J*aScript动态修改指定div内所有a标签样式指南
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】
TypeScript/J*aScript:高效查找数组中首个唯一ID对象
12306选座怎么选到特殊座位_12306特殊座位选择注意事项
cad如何更改注释性对象的比例_cad注释性比例调整方法
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
qq游戏大厅官方下载_qq游戏免费下载安装入口
Angular中单选按钮的正确使用与常见陷阱解析
Tabulator表格日期时间排序问题及自定义解决方案
荣耀Play7T运行卡顿解决_荣耀Play7T性能优化
将HTML Canvas内容转换为可上传的图像文件(File对象)
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
小米Civi 4录制视频过暗_小米Civi 4亮度优化
深入理解Go语言中的指针类型:以*string为例
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
NetBeans Ant项目:自动化将资源文件复制到dist目录的教程
React中useState与局部变量:理解组件状态管理与渲染机制
高德地图沿途添加点失败如何解决 高德多点规划方法


2025-12-16
浏览次数:次
返回列表