C++之class和struct的异同点

本文详细探讨了C++中class和struct的区别与联系,包括它们的相同点与本质上的区别,如存储方式、默认属性、继承规则、模板参数应用等,并解释了struct在C++中的作用及与class之间的主要差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中class和struct的区别已经讨论过很多次了, 但是都不太完整,我就把我的心得说一下 , 总结一下两者的异同点, 有错误的地方请多多包涵。

首先先谈一谈相同点: 在C++中, struct和class变得几乎相同了, 这是为了兼容C语言而保留的struct,;

struct能包涵成员函数, struct能实现继承,struct能实现多态, struct几乎和class一样了 ;


但是struct与class有本质上的区别:

 一、 struct是结构体式的东西, 而class是对象的东西, 所以struct存储在栈上, 而class存储在堆上, 这是其本质区别;故struct的实现体不需要gc来分配和释放内存;

二、struct的默认属性是public,  而class的默认属性是private;

三、struct的继承默认属性也是public :

 如: class A{ public:  int a =0;};   class B :  A{};  struct  C:A{};  

在这两种继承中,B不可访问a , 而C可以访问a;

四、class定义的类可以作为模板的参数, 而struct不可以作为模板的参数;

其实struct是一个数据结构的实现体, 而class是一个面向对象的实现体;

struct和class的最本质的区别应该是在思想

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值