C++中struct和class有什么本质区别?(代码示例)


本质区别只有一个:默认访问权限不同。struct默认public,成员无需显式声明即可被外部访问;class默认private,需显式声明public才能被外部访问。

c++中struct和class有什么本质区别?(代码示例)

本质区别只有一个:默认访问权限不同。

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资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72 查看详情 晓象AI资讯阅读神器
  • 都能定义成员变量、成员函数、构造函数、析构函数、运算符重载
  • 都能继承(单继承、多继承)、被继承、有虚函数、支持模板
  • 都能用 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有什么本质区别?(代码示例)的详细内容,更多请关注其它相关文章!


# 区别  # 有什么  # 访问权限  # 运算符  # c++  # 广东关键词搜索排名前十  # 番禺网站建设分享  # 济南正规seo推广公司  # 网站建设要多少钱左右  # 法式洋房营销推广  # 安徽短视频营销推广公司  # 无极竞价网站推广方案模板  # 小白怎么学seo  # 福建互联网视频营销推广  # 万词网站建设案例  # 就能  # 你可以  # 动态分配  # 如何使用  # 尼克  # 只有一个  # 都能 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 海外搜索引擎推广效果怎么样,怎么分析效果!  《真我》申请退款方法  知音漫客官网首页入口_知音漫客热门漫画推荐  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  MongoDB聚合管道:高效统计列表中各项的文档数量  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  Animex动漫社社登录官网 Animex动漫社资源社入口直达  Golang如何初始化module项目_Golang module init使用说明  《i莞家》修改昵称方法  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  《原神》月之一版本新增书籍一览  处理含命名空间的XML文件 Power Query中的高级技巧  163邮箱在线登录 163邮箱网页版在线入口  《桃源记2》资源采集攻略  J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解  京东物流快递破损了怎么办_京东快递破损理赔流程  深入理解J*aScript异步操作:setTimeout与调用栈的真相  windows10怎么开启wsl_windows10安装linux子系统教程  QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读  蛙漫2(台版)正版官网 2025免费网页版分享  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  Excel宏怎么删除_Excel中删除宏的详细操作流程  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  如何在vscode中关闭it环境  《大学搜题酱》官网地址登录  diskgenius分区工具如何设置Bios启动项  百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法  小米civi如何设置锁屏时间  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  百度网盘网页入口链接分享 百度网盘官网入口网页登录  之了课堂app做题入口  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  PPT智能排版生成入口 免费PPT内容自动生成平台  第五人格PC版怎么避免被封号_第五人格PC版防封号注意事项  《长生:天机降世》火塔小怪大全  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  《红果免费短剧》下载观看方法  《鹿路通》退余额方法  使用Google服务账号实现Google Drive API无缝集成与文件访问  修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现  Python中安全地将环境变量转换为整数的类型注解指南  Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧  路由器DNS怎么设置最快 优化DNS提升上网速度教程  excel怎么制作考勤表 excel考勤模板与函数公式讲解  163邮箱网页版入口 163邮箱在线使用  windows10怎么关闭自动安装应用_windows10禁止推广应用下载  Win10输入法不见了怎么办 Win10找回语言栏图标教程  以下哪一个是适应长期护理制度发展而设立的新职业  手机自动关机是怎么回事?如何修复?手机异常关机的原因排查与修复技巧  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐 

 2025-12-16

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.