全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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++ 中功能上没有区别:

  • 都能定义成员变量、成员函数、构造函数、析构函数、运算符重载
  • 都能继承(单继承、多继承)、被继承、有虚函数、支持模板
  • 都能用 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++  # 区别  # 运算符  # 封装  # 成员变量  # 成员函数  # 构造函数  # 析构函数  # 继承  # 多继承  # 虚函数  # class  # public  # private  # protected  # Struct  # 运算符重载  # 对象  # 访问权限  # 都能  # 只有一个  # 你可以  # 就能  # 但这  # 只看  # 它就  # 你用  # 不加 


相关文章: 头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何在腾讯云免费申请建站?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何通过虚拟主机快速完成网站搭建?  制作网站公司那家好,网络公司是做什么的?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  Java解压缩zip - 解压缩多个文件或文件夹实例  济南专业网站制作公司,济南信息工程学校怎么样?  微信小程序 五星评分(包括半颗星评分)实例代码  建站之星各版本价格是多少?  建站主机选择指南:服务器配置与SEO优化实战技巧  官网建站费用明细查询_企业建站套餐价格及收费标准指南  网站插件制作软件免费下载,网页视频怎么下到本地插件?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  制作农业网站的软件,比较好的农业网站推荐一下?  建站之星如何通过成品分离优化网站效率?  七夕网站制作视频,七夕大促活动怎么报名?  如何快速搭建二级域名独立网站?  怎么将XML数据可视化 D3.js加载XML  已有域名和空间如何搭建网站?  开源网站制作软件,开源网站什么意思?  高端建站如何打造兼具美学与转化的品牌官网?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何快速使用云服务器搭建个人网站?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  魔方云NAT建站如何实现端口转发?  如何在IIS中配置站点IP、端口及主机头?  免费网站制作appp,免费制作app哪个平台好?  如何确保西部建站助手FTP传输的安全性?  如何快速生成高效建站系统源代码?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站VPS配置与SEO优化指南:关键词排名提升策略  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  c# await 一个已经完成的Task会发生什么  香港服务器租用费用高吗?如何避免常见误区?  一键网站制作软件,义乌购一件代发流程?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何用VPS主机快速搭建个人网站?  如何在万网自助建站平台快速创建网站?  微信小程序 input输入框控件详解及实例(多种示例)  岳西云建站教程与模板下载_一站式快速建站系统操作指南  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何通过山东自助建站平台快速注册域名?  如何通过wdcp面板快速创建网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  网站制作公司排行榜,四大门户网站排名?  建站之星安装模板失败:服务器环境不兼容?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。