类(Class)和结构体(Struct)的区别

类(Class)和结构体(Struct)的区别

1.C和C++中的结构体的区别

(1)在C语言中:

  • 结构体是复合类型的一种,是一些相同类型或不同类型元素的集合,数据和数据操作是分开的;;
  • 结构体可以声明为变量、指针和数组等,用以实现复杂的数据结构;
  • 在C语言中,结构体不能包含函数;
  • 在C中定义一个结构体类型要用typedef,如果没有,声明时需要加上struct;

(2)在C++中:

  • 数据和对象是一个整体,不应该分开;

  • 在C++中,不需要使用typedef;

  • 在C++中struct得到了很大的扩充:

    • struct可以包括成员函数;

    • struct可以实现继承;

    • struct可以实现多态;

2.C++中struct和class的区别

(1)默认的继承访问权限:

class默认是private,struct默认是public;

(2)默认的访问权限:

struct作为数据结构的实现体,它默认的访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的;

(3)关键字class可用于定义参数模板参数,关键字struct不用于定义模板参数;

(4)class具有public,private,protected三种属性,而struct只有public默认属性;

(5)class具有三种继承方式,即有9中访问权限,结构体只有一种;

(6)class有专属的构造函数、析构函数等先天具备的函数;

(7)class以下几个功能是struct没有的:

  • class可以继承,子类可以使用父类的特性和方法;
  • 类型转换可以在runtime的时候检查和解释一个实例的类型;
  • 可以用deinit来释放资源;
  • 一个类可以被应用多次;

(8)struct的独特优势:

  • 结构较小,适用于复制操作,相比于一个class的实例被多次引用更加安全;
  • 无需担心内存memory leak或者多线程冲突问题;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值