恶补C++之类与结构体的异同

结构是一种用关键字struct声明的自定义数据类型。与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型。可以说类是结构体的升级类型,为了提供更好的数据保护。类在结构体之上又新增了一系列新特性,如大家所熟知的抽象,封装等。

区别:

1.结构的构造函数和类的构造函数不同。

    a.结构不能包含显式的无参数构造函数。结构成员将自动初始化为它们的默认值。

   b.结构不能包含以下形式的初始值设定类:base(argument-list);

2.对于结构中的实例字段成员,不能在声明时赋值初始化。

3.声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。

4.结构体在继承上跟类的一点点差别,

   struct A { }; 
class B : A{ }; //private继承 
struct C : B{ }; //public继承 
这是由于class默认是private,struct默认是public。

5.什么时候用结构呢?结构使用简单,并且很有用,但是要牢记:结构在堆栈中创建,是值类型,而类是引用类型。每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。

6.结构体的成员默认访问是public属性,而类的成员默认访问是private属性。

备注)一般说来,struct和class可以换用(当然要注意一些语法问题)。 而struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体,对私有成员进行保护,还提供与外界的接口。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值